2013-02-21 54 views
5

可以說我有一個控制器,它依賴於兩個模塊,這兩個模塊都包含一個指令或者具有相同名稱的服務。我可以指定究竟應該使用哪一個?如何在AngularJS中區分注入模塊的名稱空間?

angular.module('myApp', ['secondModule', 'thirdModule']) 
    .controller('Ctrl1', ['$scope', 'myService', function(scope, myService){ 
     scope.user = myService.getUser(); 
     console.log(myService); 
}]); 

在這種情況下,兩個secondModulethirdModule有一個服務叫做爲myService。但本例中僅使用thirdModule中的一個。我試圖把secondModule.myService作爲Ctrl1的依賴項,但它不起作用。 AngularJS中有某種類型的命名空間嗎?

+0

你應該真的避免這個!目前這似乎不可能 – 2013-02-21 21:40:55

+2

這似乎是一個真正的問題,當開發可能有很多指令/服務/常量的大型應用程序等。使用簡單的命名約定並不是一個足夠強大的機制imo。 – 2013-04-18 12:57:41

回答

2

目前,沒有,沒有基於模塊的命名空間。你必須自己避免碰撞。

我相信對此有一些討論,但目前我找不到它。

0

如何命名空間的服務(以及控制器)?

angular.module('secondModule', []) 
    .factory('secondModule.myService', function($http) { 
     return { 
      getUser: function() { /* some code here */ } 
     }; 
    }); 

angular.module('thirdModule', []) 
    .factory('thirdModule.myService', function($http) { 
     return { 
      getGroup: function() { /* some code here */ } 
     }; 
    }); 

angular.module('myApp', ['secondModule', 'thirdModule']) 
    .controller('myApp.Ctrl1', 
     ['$scope', 'secondModule.myService', function(scope, myService){ 
      scope.user = myService.getUser(); 
      console.log(myService); 
     }] 
    ); 
相關問題