2016-04-26 5 views
0

Ich arbeite an einer großen angularJS App, die in ASP.NET MVC ist, Wenn ich Skripte eins nach dem anderen mit Skript-Tag alles funktioniert funktioniert ohne Probleme, aber sobald ich Bündelung und Minification aktivieren durch web.optimization werden einige controller nicht aufgelöst und app bremst.AngularJS App MVC4 Bündelung Bremsen App

  var scriptBundle = new ScriptBundle("~/bundle/app") 
      .Include("~/App/app.js") 
      .IncludeDirectory("~/App", "*.js", true); 

So registriere ich Bundle. nach diesem ersten Ding sehe ich in der Konsole nach dem Laden App ist

Error: [$injector:nomod] http://errors.angularjs.org/1.5.5/$injector/nomod?p0=app 

und ins einige Controller bekomme ich folgende Fehler.

das ist sehr seltsam, denn wenn ich im geladenen Skript diesen Controller ist Controller ist definitiv geladen.

bei der Erklärung angularjs Controller verwende ich folgendes Muster.

marketConfigWizardCtrl.$inject = ['$scope', 'close']; 
angular.module('PcoreManager').controller('marketConfigWizardCtrl', marketConfigWizardCtrl); 

function marketConfigWizardCtrl($scope, close){ 
} 

Antwort

1

Haben Sie dieses Muster versucht?

var MyController = function($scope, greeter) { 
    // ... 
} 
MyController.$inject = ['$scope', 'greeter']; 
someModule.controller('MyController', MyController); 

Nach der Dokumentation: https://docs.angularjs.org/guide/di

die minifiers Damit die Funktionsparameter umbenennen und sein noch Lage, die richtigen Dienste zu injizieren, muss die Funktion mit dem $ inject kommentiert werden Eigentum. Die $ inject -Eigenschaft ist ein Array von Service Namen zum injizieren.

+0

Ja, ich tat, aber es hat nicht funktioniert. Die Gründe dafür sind während der Verkleinerung und Bündelung, es generiert Skript in einer Reihenfolge, in der Controller in einem unteren Teil der Antwort definiert sind und das ist ein echtes Problem. Die einzige Möglichkeit, es zum Laufen zu bringen, besteht darin, alle Includes manuell aufzulisten, was wirklich keine gute Methode ist, da es sich um eine Enterprise-App handelt und es zu viele Skripte gibt. –

Verwandte Themen