2014-10-20 13 views
5

Realizzo un modulo AngularJs. Il fatto è che questo modulo suppone di funzionare con altri moduli (è come un plugin). Quindi in pratica importerò questo modulo da un altro modulo in seguito. Tuttavia, ci sono alcuni servizi in questo modulo che vorrei sovrascrivere più tardi dal modulo che importa questo modulo. Come lo farei? Definirebbe semplicemente un altro servizio con lo stesso nome farlo? Se sì, come potrei ottenere il servizio originale?Ignora servizio AngularJs

+3

Sono state prese delle [ '$ provide.decorator'] (https://docs.angularjs.org/api/auto/servizio/$ fornire # decoratore)? – Yoshi

+0

Ah! Questo lo farà. Grazie! – asdacap

risposta

3

L'override si verificherà in base all'ordine di istanziazione dei moduli. L'ultimo modulo creato avrà la precedenza sui moduli con servizi duplicati creati prima di esso.

SO collegamento per quanto riguarda namespacing di servizi: "Namespacing" services in AngularJS

Plunker: http://plnkr.co/edit/P488AkNtGYGUXmo9gIAT?p=preview

var dep1 = angular.module("dep1",[]); 
    var dep2 = angular.module("dep2",[]); 
    var app = angular.module("app",["dep2","dep1"]); 

    dep1.factory("helloSrvc",function(){ 
    return { 
     msg: "hello from dep1" 
    } 
    }); 

    dep2.factory("helloSrvc",function(){ 
    return { 
     msg: "hello from dep2" 
    } 
    }); 

    app.controller("myCtrl", function(helloSrvc,$scope){ 
    $scope.msg = helloSrvc.msg; 
    }); 

    angular.bootstrap(document,["app"]); 
Problemi correlati