我有我的应用程序:
'use strict';
angular.module('ProjectTracker', [
'App.controllers',
'App.services'
])
我的服务:
angular.module("App.services", [])
.factory('ProjectManager', function () {
return {
getAll: function () {
return [{ID:'123123', Name:'2313'}];
}
}
});
我的控制器:
var appCtrl = angular.module('App.controllers', ['App.services']);
var ProjectsListController = ['$scope', 'ProjectManager', function ($scope, ProjectManager) {
$scope.projectList = ProjectManager.getAll();
}];
appCtrl.controller('ProjectsListController', ProjectsListController);
但是当我开始时,它会把我抛出:
Error: [$injector:unpr] http://errors.angularjs.org/1.2.16/$injector/unpr?p0=ProjectManagerProvider%20%3C-%20ProjectManager t/<@http://localhost:14967/Areas/ProjectTrack/Scripts/angular .min.js:6 ac/m.$injector<@http://localhost:14967/Areas/ProjectTrack/Scripts/angular.min.js:35 c@http:// localhost:14967/Areas/ProjectTrack/Scripts/angular.min.js:34 ac/p.$injector<@http://localhost:14967/Areas/ ProjectTrack/Scripts/angular.min.js:36 c@http://localhost:14967/Areas/ProjectTrack/Scripts/angular.min.js:34 d@http://localhost:14967/Areas/ProjectTrack/Scripts/angular.min.js:34 ac/g/<.instantiate@http://localhost:14967/ Areas/ProjectTrack/Scripts/angular.min.js:34 Od/this.$get</<@http://localhost:14967/Areas/ProjectTrack/Scripts/ angular.min.js:66 cc/this.$get</ia/J/<@http://localhost:14967/Areas/ProjectTrack/Scripts/angular.min.js:53 q@http:// localhost:14967/Areas/ProjectTrack/Scripts/angular.min.js:7 J@http://localhost:14967/Areas/ProjectTrack/Scripts/ angular.min.js:52 f@http://localhost:14967/Areas/ProjectTrack/Scripts/angular.min.js:46 f@http://localhost:14967/ Areas/ProjectTrack/Scripts/angular.min.js:46 cc/this.$get</x/<@http://localhost:14967/Areas/ProjectTrack/Scripts/ angular.min.js:46 $b/c/</<@http://localhost:14967/Areas/ProjectTrack/Scripts/angular.min.js:18 Yd/this.$get</h. prototype.$eval@http://localhost:14967/Areas/ProjectTrack/Scripts/angular.min.js:108 Yd/this.$get</h. prototype.$apply@http://localhost:14967/Areas/ProjectTrack/Scripts/angular.min.js:109 $b/c/<@http://localhost:14967/ Areas/ProjectTrack/Scripts/angular.min.js:18 d@http://localhost:14967/Areas/ProjectTrack/Scripts/angular.min.js:34 $b/c@http://localhost:14967/Areas/ProjectTrack/Scripts/angular.min.js:18 $b@http://localhost:14967/Areas/ ProjectTrack/Scripts/angular.min.js:18 Wc@http://localhost:14967/Areas/ProjectTrack/Scripts/angular.min.js:17 @http://localhost:14967/Areas/ProjectTrack/Scripts/angular.min.js:209 jQuery.Callbacks/fire@http://localhost:14967/ Scripts/jquery-2.0.3.js:2913 jQuery.Callbacks/self.fireWith@http://localhost:14967/Scripts/jquery-2.0.3.js:3025 . ready@http://localhost:14967/Scripts/jquery-2.0.3.js:398 completed@http://localhost:14967/Scripts/jquery-2.0.3.js:93
我尝试了很多方法来注入我的服务,但没有任何效果。 这个angular-app是大型C#.NetMVC项目的一部分,但是compliation模式是调试 -
<compilation debug="true" targetFramework="4.5" />
因此,它不应该重命名我的变量(缩小应该关闭)。 我怎么能用我的服务?
答案 0 :(得分:2)
我认为你在错误的地方声明了依赖...
我这样做:
var appCtrl = angular.module('App.controllers', ['App.services']);
var ProjectsListController = function ($scope, ProjectManager) {
$scope.projectList = ProjectManager.getAll();
};
appCtrl.controller('ProjectsListController', ['$scope', 'ProjectManager', ProjectsListController]);
答案 1 :(得分:2)
在调用angular时,在app控制器中。模块只传递模块的名称,当你传入数组时,你正在重新定义模块并丢失一个依赖模块的第二个参数。
创建模块
angular.module('name', []);
参考模块:
angular.module('name');
答案 2 :(得分:1)
这些是在单独的文件中吗?模块设置,服务和控制器?如果是这样,很可能你没有将其中一个文件添加到Bundles.config中。错误消息指出您正在使用Angular的缩小版本。我建议你将其更改为调试版本,这样你就可以看到更有意义的消息。我有plunk所有这些在同一个文件中,它工作得很好。这就是让我相信你缺少参考的原因。此外,如果您向捆绑包添加脚本文件,请确保构建项目然后对其进行测试。