替换 AngularJS 中的模块或服务
Replacing modules or services in AngularJS
如何使我的依赖项可互换?假设我在模块 myDependency 中存储了一个名为 myService 的服务。我希望能够用新服务替换 myDependency 以覆盖旧服务。我想保留它,以便主应用程序仍将运行相同的服务对象变量。
我只是创建一个相同的模块来覆盖它吗?还是应该将模块引用到$variable并更改对新服务的引用?
我的主要目标只是能够包含一个新的模块javascript文件并让它覆盖旧模块。
//Main application
var app = angular.module('tswp',['myDependency'])
.controller('MyAPP',function(myService){
console.log(myService.run());
}
//Old dependency
angular.module('myDependency',[])
.service('myService',function(){
this.run = function(){
console.log("1")
}
})
//This is the new service I want to replace the old service with
angular.module('myDependency',[])
.service('myService',function(){
this.run = function(){
console.log("2")
}
})
注射剂的标识符是唯一的。通过将源代码包含在模块(及其内容)的定义中,您可以配置全局(唯一)$provide
服务。
如果使用已使用的名称定义模块,则会丢弃以前的模块配置(全部),并将其替换为新模块(请参阅说明)。仅当您真的想丢弃旧模块中定义的所有内容时,才执行此操作。
如果在两个单独的模块中定义两个同名的服务,则在构造主模块时,使用的实际配置将取决于依赖项的顺序。无论包含哪个配置,最后一个配置都将覆盖以前的配置。这样做是为了替换单个服务实现,但要注意确保重新定义确实包含在最后。
此外,您可以使用.decorator()
on $provide 仅更改服务实现的特定详细信息。
相关文章:
- AngularJS在不使用变量的情况下将服务注入模块中,这样就可以缩小它
- 如何在公共js模块中从web服务返回数据
- 从函数内部、类内部、模块内部访问 Angular 服务
- 角度依赖注入,使用服务在模块之间传递值
- 从 Angular 控制器访问不同模块中的角度服务
- AngularJS在自定义服务中使用角度模块
- 使用在另一个服务方法中声明为模块模式的服务方法之一
- 如何测试名为“示例”的 Angular 服务.Svc' 在我的模块中使用 mocha+chai
- ES2015 单例或服务提供商或模块,用于敲除.js组件
- 在两个不同的模块和两个不同的js文件之间共享服务
- 角度模块中的全局通信:事件总线或调解器模式/服务
- 角度依赖注入,如果将控制器、服务等分离到单独的模块中
- 替换 AngularJS 中的模块或服务
- 角度、服务和模块依赖性混淆
- 将angular服务与es6模块一起使用有意义吗
- requirejs:从web服务加载脚本/模块
- 如何在模块配置中使用Angular.js服务实例并保持相同的实例
- 如何在angular js中将服务从一个模块调用到另一个模块服务
- 如何使用babel为我的js服务模块实现经过身份验证的es 7装饰器
- 返回角度服务模块中的角度承诺