Рассмотрим следующий 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");
}
У меня есть 2 модуля (module1 и module2). Оба модуля1 и module2 определяют службу myService. Кажется, создается конфликт имен в myService в Angular, когда оба модуля импортируются в myApp. Похоже, что AngularJs просто использует второе определение сервиса, не предупредив вас о возможной проблеме.
Очень большие проекты (или просто повторное использование модулей в целом) могут столкнуться с риском столкновения имен, что может быть сложно отлаживать.
Есть ли способ префиксных имен с именем модуля, чтобы не произошло столкновений имен?