Module und Namensraum / Namenskollision in AngularJS

Betrachten Sie die folgende JFiddlehttp://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");
}​

Ich habe 2 Module (Modul1 und Modul2). Sowohl Modul1 als auch Modul2 definieren einen Dienst namens myService. Dies scheint einen Namenskonflikt bei myService in Angular zu verursachen, wenn beide Module in myApp importiert werden. Offenbar verwendet AngularJs nur die zweite Service-Definition, ohne Sie über das mögliche Problem zu informieren.

Bei sehr großen Projekten (oder der Wiederverwendung von Modulen im Allgemeinen) besteht die Gefahr von Namenskonflikten, die möglicherweise nur schwer zu beheben sind.

Gibt es eine Möglichkeit, Namen mit dem Modulnamen zu versehen, damit es nicht zu Namenskonflikten kommt?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage