Come chiamare una funzione da un altro controller in angularjs?

Ho bisogno di chiamare la funzione in un altro controller in js angular. Come è ansible modo per favore aiutami grazie in anticipo

Codice :

app.controller('One', ['$scope', function($scope) { $scope.parentmethod = function() { // task } } ]); app.controller('two', ['$scope', function($scope) { $scope.childmethod = function() { // Here i want to call parentmethod of One controller } } ]); 

La comunicazione tra i controller avviene tramite $emit + $on / $broadcast + $on metodi.

Quindi nel tuo caso vuoi chiamare un metodo di Controller “One” all’interno del Controller “Two”, il modo corretto per farlo è:

 app.controller('One', ['$scope', '$rootScope' function($scope) { $rootScope.$on("CallParentMethod", function(){ $scope.parentmethod(); }); $scope.parentmethod = function() { // task } } ]); app.controller('two', ['$scope', '$rootScope' function($scope) { $scope.childmethod = function() { $rootScope.$emit("CallParentMethod", {}); } } ]); 

Mentre $rootScope.$emit è chiamato, puoi inviare qualsiasi dato come secondo parametro.

Non userei la funzione da un controller a un altro. Un approccio migliore sarebbe spostare la funzione comune in un servizio e quindi iniettare il servizio in entrambi i controller.

Se i two controller sono nidificati in One controller.
Quindi puoi semplicemente chiamare:

 $scope.parentmethod(); 

Angular cercherà la funzione parentmethod partire dall’ambito corrente e fino a quando non raggiungerà il rootScope .

È ansible utilizzare gli eventi per fornire i propri dati. Codice come quello:

 app.controller('One', ['$scope', function ($scope) { $scope.parentmethod=function(){ $scope.$emit('one', res);// res - your data } }]); app.controller('two', ['$scope', function ($scope) { $scope.$on('updateMiniBasket', function (event, data) { ... }); }]); 

L’approccio migliore per comunicare tra i due controller è utilizzare gli eventi.

Vedi la documentazione dell’ambito

In questo controllo $on , $broadcast e $emit .

Se si desidera eseguire la funzione parentmethod del controllore genitore all’interno di un controller figlio, chiamarla:

 $scope.$parent.parentmethod(); 

Puoi provarlo qui