2013-02-21 9 views
5

Diciamo che ho un controller, che dipende da due moduli che contengono entrambi una direttiva o un servizio con lo stesso nome. Posso specificare quale deve essere esattamente utilizzato?Come distinguere tra i namespace dei moduli iniettati in AngularJS?

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

In questo caso sia secondModule e thirdModule hanno un servizio chiamato myService. In questo esempio verrà utilizzato solo il terzo modulo terzoModulo. Ho provato a inserire qualcosa come secondModule.myService come dipendenza per Ctrl1, ma non funzionava. Esiste una sorta di namespace in AngularJS?

+0

si dovrebbe davvero evitare questo !! al momento questo non sembra possibile –

+2

Questo sembra un vero problema quando si sviluppano app su larga scala che potrebbero avere molte direttive/servizi/costanti ecc. L'uso di convenzioni di denominazione semplici non è un meccanismo abbastanza forte. –

risposta

2

Al momento, no, non vi è alcun namespace basato su modulo. Dovrai evitare le collisioni da solo.

Credo che ci fosse qualche discussione a riguardo, ma al momento non riesco a trovarlo.

0

Come circa namespacing i servizi (e anche controllori)?

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); 
     }] 
    ); 
Problemi correlati