Javascript 将服务注入控制器时获取“未知提供程序”

Javascript 将服务注入控制器时获取“未知提供程序”,javascript,angularjs,angularjs-service,angularjs-injector,Javascript,Angularjs,Angularjs Service,Angularjs Injector,我有我的应用程序: 'use strict'; angular.module('ProjectTracker', [ 'App.controllers', 'App.services' ]) 我的服务: angular.module("App.services", []) .factory('ProjectManager', function () { return { getAll: function () { return [{ID:'1

我有我的应用程序:

'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应用程序是大型C.NetMVC项目的一部分,但兼容模式是调试-

<compilation debug="true" targetFramework="4.5" />
所以,它不应该重命名我的变量,应该关闭缩小。
我该如何使用我的服务?

我认为你在错误的地方声明了依赖项

我是这样做的:

var appCtrl = angular.module('App.controllers', ['App.services']);
var ProjectsListController =  function ($scope, ProjectManager) {
$scope.projectList = ProjectManager.getAll();
};
appCtrl.controller('ProjectsListController', ['$scope', 'ProjectManager', ProjectsListController]);

我认为你在错误的地方声明依赖关系

我是这样做的:

var appCtrl = angular.module('App.controllers', ['App.services']);
var ProjectsListController =  function ($scope, ProjectManager) {
$scope.projectList = ProjectManager.getAll();
};
appCtrl.controller('ProjectsListController', ['$scope', 'ProjectManager', ProjectsListController]);

当您调用angular时,在应用程序控制器中。模块仅传递模块的名称,当您在数组中传递第二个参数时,您将重新定义模块并丢失依赖模块

创建模块

angular.module('name', []);
参考模块:

angular.module('name');

当您调用angular时,在应用程序控制器中。模块仅传递模块的名称,当您在数组中传递第二个参数时,您将重新定义模块并丢失依赖模块

创建模块

angular.module('name', []);
参考模块:

angular.module('name');

这些文件是分开的吗?模块设置、服务和控制器?如果是这样,很可能您没有将其中一个文件添加到Bundles.config中。错误消息指出您正在使用Angular的缩小版本。我建议您将其更改为调试版本,以便看到更有意义的消息。我把所有这些都放在同一个文件中,效果很好。这就是为什么我认为你错过了一个推荐人。此外,如果您将脚本文件添加到捆绑包中,请确保构建项目,然后对其进行测试

这些文件是否在单独的文件中?模块设置、服务和控制器?如果是这样,很可能您没有将其中一个文件添加到Bundles.config中。错误消息指出您正在使用Angular的缩小版本。我建议您将其更改为调试版本,以便看到更有意义的消息。我把所有这些都放在同一个文件中,效果很好。这就是为什么我认为你错过了一个推荐人。此外,如果您将脚本文件添加到捆绑包中,请确保构建项目,然后对其进行测试

所有文件都添加到包中。我也尝试过在一个文件中使用所有这些代码-结果相同。是的,它可以工作。但是,当我尝试在我的.Net应用程序中使用1个文件在plunk中执行此操作时,我在清除缓存然后重试时出现了相同的错误?此外,ProjectManager是否在所有地方都拼写正确?已解决!谢谢。缩小是一个问题。尽管通过设置debug=on关闭了它,但它仍然继续压缩脚本。当我尝试直接使用标签添加脚本时,问题消失了。这是一个救命稻草。我会花上几个小时来调试它,也不会意识到这是我的enableOptimizations=true造成的。所有文件都添加到包中。我也尝试过在一个文件中使用所有这些代码-结果相同。是的,它可以工作。但是,当我尝试在我的.Net应用程序中使用1个文件在plunk中执行此操作时,我在清除缓存然后重试时出现了相同的错误?此外,ProjectManager是否在所有地方都拼写正确?已解决!谢谢。缩小是一个问题。尽管通过设置debug=on关闭了它,但它仍然继续压缩脚本。当我尝试直接使用标签添加脚本时,问题消失了。这是一个救命稻草。我会花上几个小时来调试它,也不会意识到是我的enableOptimizations=true导致了这一点。