2015-05-13 15 views
5

Ho un controller comune questo controller contiene un metodo. Devo chiamare questo metodo controller da un altro servizio. È possibile.Chiamare il metodo di controllo AngularJs da un altro servizio

Il mio codice di esempio: Questo è il mio Root Controller e la sua funzione di contenere chiamata myFunction

app.controller('rootController', function($rootScope,$scope,$on) { 

    $scope.$on("func_call", function(event, args) { 
    var p = args.myParam; 
    // do something 
}) 

    }); 

Questo è il mio servizio, da questo servizio ho bisogno di chiamare la funzione di regolatore principale

app.factory('anotherService', function($rootScope,$broadcast){ 

     $rootScope.$broadcast("func_call", { myParam: {} }); 
    }); 

Ho provato a chiamare la funzione Root Controller dal servizio $rootScope.myFunction ("called") ma non funziona. Chiunque si prega di suggerire il modo migliore per chiamare la funzione di controllo radice dal servizio

+0

perché si desidera chiamare il metodo controller da? Service..usualmente chiamiamo metodo di servizio dal controller –

+0

Perché il servizio non ha alcun controller. è per questo che ho bisogno di chiamare la funzione del controller dal servizio. È possibile? – Team

+0

guarda la risposta che ho aggiunto .. Grazie :) –

risposta

1

si può sempre utilizzare $broadcast, $emit e $on

provare ad andare oltre il $rootScope docs

impostare la funzione di ricezione ascoltatore in controllore:

$scope.$on("func_call", function(event, args) { 
    var p = args.myParam; 
    // do something 
}) 

e chiamarlo nel servizio:

$rootScope.$broadcast("func_call", { myParam: {} }); 
+0

Come posso passare il parametro attraverso questa chiamata di funzione dal servizio? – Team

+0

Ho modificato la risposta. è tutto nel link che ho fornito – svarog

+0

che ho provato ad usare con '$ broadcast' ma sto ottenendo ERROR dell'iniettore di AngularJs. come possiamo risolvere questo problema ?? – Team

Problemi correlati