我正在研究ASP.NET MVC中的一个大的angularJS应用程序, 当我使用脚本标记逐个包含脚本时,一切都可以正常工作,但只要我通过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){
}
答案 0 :(得分:1)
你试过这种模式吗?
var MyController = function($scope, greeter) {
// ...
}
MyController.$inject = ['$scope', 'greeter'];
someModule.controller('MyController', MyController);
根据文档:https://docs.angularjs.org/guide/di
允许缩小器重命名功能参数仍然是 能够注入正确的服务,该功能需要注释 使用$ inject属性。 $ inject属性是一个服务数组 要注射的名字。