【发布时间】:2018-03-13 19:22:13
【问题描述】:
我有一个共享模块,用 AngularJS 1.6.5 编写。该模块将被多个应用程序使用。这个模块在内部有几个服务,必须被宿主应用程序覆盖。这是为了处理诸如对不同 REST 端点的请求授权差异之类的事情,这些在不同的主机系统之间都是不同的。
我知道我可以先定义我的共享模块,然后在我的代码中定义同名的服务,但这感觉很脏。尤其是当每个应用程序都已经拥有类似的服务时,只是名称不同。
有什么建议吗?
澄清:
所以我的共享模块可能有带有注入服务的控制器的指令
class MyDirectiveController {
/*@ngInject*/
constructor($element, entity) {
this.$element = $element;
this.entity = entity;
}
$onInit() {
this.entity.get(this.id)
.then((data) => this.dataSet = data);
}
}
而且,在共享模块中,我会有一个虚拟服务:
class Entity {
/*@ngInject*/
constructor($q) {
this.$q = $q;
}
get() {
console.info('You must include your own override service for retrieving entity data');
return this.$q.reject();
}
}
然后以某种方式将我的父应用服务作为覆盖传递给模块的实体服务:
entity = MyAppEntityService;
【问题讨论】:
标签: javascript angularjs module ecmascript-6