【发布时间】:2014-06-16 04:31:40
【问题描述】:
我有两个文件,我在我的 Angular 应用程序中定义服务,但是当我尝试在我的指令中同时使用它们时,我收到一个错误,提示我找不到第二个定义的指令的服务提供者。似乎一项服务正在覆盖另一项服务。如果我将 service2.js 中的模块定义更改为 myapp.services2,那么它可以工作。我想我可以通过这种方式将多个工厂添加到同一个模块中。有人可以指出我做错了什么吗?
service1.js:
var services = angular.module('myapp.services',[]);
services.factory('Service1', function() {
// service code
});
service2.js:
var services = angular.module('myapp.services',[]);
services.factory('Service2', function() {
// service code
});
mydirective.js:
angular.module('myappdirective', []).directive('myapp', ['Service1', 'Service2',
function(service1,service2) {
// directive code
}]);
【问题讨论】:
-
您定义了服务模块两次。您只需定义一次(在一个文件中)。在我最近的项目中,我将 var services = angular.module 行移到了它自己的 js 文件中(肯定过分了)。
-
那不应该是第二次查找而不重新定义吗?
-
如果你删除注入数组,我认为它会这样工作 - angular.module('myapp.services');
-
我会试试看,但为什么会这样(这里是 Angular 的新手)
-
哈!这只是他们建造它的方式。这来自文档:请注意,使用 angular.module('myModule', []) 将创建模块 myModule 并覆盖任何名为 myModule 的现有模块。使用 angular.module('myModule') 检索现有模块。
标签: javascript angularjs service dependency-injection factory