Javascript angularjs在不同文件中为同一模块定义服务
我有两个文件,其中我在angular应用程序中定义了服务,但当我尝试在指令中同时使用它们时,我得到一个错误,即对于我第二个定义的指令,找不到服务提供商。似乎一个服务正在覆盖另一个。如果我将service2.js中的模块定义更改为myapp.services2,那么它可以工作。我想我可以通过这种方式将多个工厂添加到同一个模块中。有人能指出我做错了什么吗 service1.js:Javascript angularjs在不同文件中为同一模块定义服务,javascript,angularjs,service,dependency-injection,factory,Javascript,Angularjs,Service,Dependency Injection,Factory,我有两个文件,其中我在angular应用程序中定义了服务,但当我尝试在指令中同时使用它们时,我得到一个错误,即对于我第二个定义的指令,找不到服务提供商。似乎一个服务正在覆盖另一个。如果我将service2.js中的模块定义更改为myapp.services2,那么它可以工作。我想我可以通过这种方式将多个工厂添加到同一个模块中。有人能指出我做错了什么吗 service1.js: var services = angular.module('myapp.services',[]); services
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
}]);
这是来自文档: 请注意,使用angular.module('myModule',[])将创建模块myModule并覆盖任何名为myModule的现有模块。使用angular.module('myModule')检索现有模块 可在此处找到:
这是可能的,但是容易出错,因此不建议这样做 对你已经在做的事情做一些小的修改
只要不要在除service1.js之外的其他文件中重新声明模块变量,或者将模块定义放在自己的文件中,并按照module.js、services.js、directive.js的顺序包含这些js文件,那么它就会工作您将定义服务模块两次。您只需要定义一次(在一个文件中)。在我最近的一个项目中,我将var services=angular.module行移到了它自己的js文件中(肯定是多余的)。这不应该第二次查找它,而不是重新定义它吗?如果删除注入数组,我认为它会这样工作-angular.module('myapp.services');我会试试的,但为什么会有效果(这里是新来的)哈!这就是他们建造它的方式。这来自文档:注意使用angular.module('myModule',[])将创建模块myModule并覆盖任何名为myModule的现有模块。使用angular.module('myModule')检索现有模块。有趣的是,现有的实现让几乎所有人都感到困惑<代码>angular.createModule(,),angular.retrieveModule()不会引起这么多问题!;)另外,错误地添加
[]
是很难检测到的,我认为这很明显。我习惯于使用JQuery,所以像.width()
和.width(newWidth)
这样的东西对我来说都是很平常的。此外,这只会让你惊讶一次。下次当您看到喷油器错误告诉您找不到模块时,您将知道您又找到了;)