请参考以下jfiddle http://jsfiddle.net/bchapman26/9uUBU/29/
//angular.js example for factory vs service
var app = angular.module('myApp', ['module1', 'module2']);
var service1module = angular.module('module1', []);
service1module.factory('myService', function() {
return {
sayHello: function(text) {
return "Service1 says \"Hello " + text + "\"";
},
sayGoodbye: function(text) {
return "Service1 says \"Goodbye " + text + "\"";
}
};
});
var service2module = angular.module('module2', []);
service2module.factory('myService', function() {
return {
sayHello: function(text) {
return "Service2 says \"Hello " + text + "\"";
},
sayGoodbye: function(text) {
return "Service2 says \"Goodbye " + text + "\"";
}
};
});
function HelloCtrl($scope, myService) {
$scope.fromService1 = myService.sayHello("World");
}
function GoodbyeCtrl($scope, myService) {
$scope.fromService2 = myService.sayGoodbye("World");
}
我有两个模块(module1和module2),它们都定义了一个名为myService的服务。当这两个模块被导入到myApp中时,似乎会在Angular中创建一个myService名称冲突。看起来AngularJs只是使用第二个服务定义而不警告您可能存在的问题。
非常大的项目(或仅在一般情况下重用模块)可能存在名称冲突的风险,这可能很难调试。
是否有一种方法可以使用模块名称作为前缀,以避免出现名称冲突?