Я работаю над большим angularJS-приложением, которое находится внутри ASP.NET MVC. Когда я включаю скрипты один за другим, используя скриптовый тег, все работает без каких-либо проблем, но как только я включаю связывание и минимизацию через web.optimization, некоторые контроллеры не решаются и приложения тормозов.
var scriptBundle = new ScriptBundle("~/bundle/app")
.Include("~/App/app.js")
.IncludeDirectory("~/App", "*.js", true);
Вот как я регистрирую пакет. после этого первое, что я вижу в консоли после загрузки приложения,
Error: [$injector:nomod] http://errors.angularjs.org/1.5.5/$injector/nomod?p0=app
и в некоторых контроллерах я получаю следующие ошибки.
Argument 'ControllerName' is not a function, got undefined
это очень странно, потому что, когда я смотрю загруженный скрипт, этот контроллер - это контроллер, который определенно загружен.
при объявлении контроллера angularjs я использую следующий шаблон.
marketConfigWizardCtrl.$inject = ['$scope', 'close'];
angular.module('PcoreManager').controller('marketConfigWizardCtrl', marketConfigWizardCtrl);
function marketConfigWizardCtrl($scope, close){
}
Вы пробовали этот шаблон?
var MyController = function($scope, greeter) {
// ...
}
MyController.$inject = ['$scope', 'greeter'];
someModule.controller('MyController', MyController);
Согласно документам: https://docs.angularjs.org/guide/di
Чтобы министры могли переименовать параметры функции и все еще иметь возможность вводить правильные сервисы, функция должна быть аннотирована с помощью свойства $ injection. Свойство $ injection - это массив имен служб для инъекции.