我正计划实施基本角度模块base
和2个子模块m1
和m2
。在模块base
中将实现所有服务,指令和控制器。模块m1
和m2
将是服务,控制器,具有相同名称的指令的不同实现。
在我的应用程序中将是2个几乎相同的编辑器,但也将在服务,指令或控制器的实现方面存在差异。
想象一下,base
模块中有控制器
function IndexCtrl($scope, userService) {
}
但在模块m1
和m2
中是userService
的不同实现。
我正在使用ui.router
开发SPA并使用ng-app
指令启动应用程序。
angular.module('test', ['base', 'm1', 'm2'])
<html ng-app="test">
</html>
将根据userService
模块定义中的模块顺序解决服务test
。
在这种情况下,如何管理解析依赖项?
我不能使用提供程序,因为基本模块对儿童模块一无所知。我也不能使用angular.bootstrap
。
答案 0 :(得分:0)
目前AngularJS 不处理服务的命名空间冲突,这意味着,您有2个不同的模块,其服务名称相同,并且您在应用中包含这两个模块,只有一个服务将有空。正如您刚才所说,服务将根据模块注入的顺序得到解决。
解决此问题的正确方法是为服务添加前缀,而不是使用完全相同的名称。
答案 1 :(得分:0)
您不能拥有两个具有冲突命名空间的模块。但是如果条件是常量并且在早期状态下可用,则可以注册正确的服务和指令集:
var userService1 = function(...) {...};
var userService2 = function(...) {...};
var module = angular.module("m", []);
if (condition) {
module.service("userService", userService1);
} else {
module.service("userService", userService2);
}