2014-02-06 51 views
5

下比方說,我有每個同名DSerrorLog的三個工廠不同模塊AngularJS:注射用相同的名字,但不同的模塊

angular.module('module1').factory('DSerrorLog', function() { 
    return { show: false, msg: "" }; 
}); 
angular.module('module2').factory('DSerrorLog', function() { 
    return { show: false, msg: "" }; 
}); 
angular.module('module3').factory('DSerrorLog', function() { 
    return { show: false, msg: "" }; 
}); 

下如何從正確的模塊注入正確的實例的工廠/服務一個例如DSerrorLog根據module3進入我的控制器?我認爲語法如module3.DSerrorLog在這裏不起作用。

angular.module('mainApp', ['module1', 'module2', 'module3']) 
    app.controller('MainCtrl', function ($scope, DSerrorLog) { 
}); 

回答

7

很酷的問題!

事實證明,包含它們的訂單會影響您獲得的訂單。基本上每個添加的模塊都會覆蓋噴油器。因此,在您的示例中,如果您只是正常注入,則DSerrorLog將來自module3。

原來你仍然可以得到其他模塊的注射器,如果你想使用它們。這裏就是我如何做一個小提琴:http://jsfiddle.net/7YH7p/

app.controller('myCtrl', ['$scope', '$injector', 'test', 
    function($scope, $injector, test) { 
     $scope.injected = test.data; 
     var inj = angular.injector(['mod1']); 
     $scope.my_inject = inj.get('test').data; 
}]); 

兩個具有不同的值!

希望這有助於!

+0

我明白了。謝謝! – lolski

相關問題