Como chamar uma function de outro controlador em angularjs?

Eu preciso chamar a function em outro controlador em js angular.Como é possível, por favor me ajude obrigado antecipadamente

Código:

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

A comunicação entre controladores é feita através de $emit + $on / $broadcast + $on methods.

Então, no seu caso, você quer chamar um método de Controller “One” dentro do Controller “Two”, a maneira correta de fazer isso é:

 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", {}); } } ]); 

Enquanto $rootScope.$emit é chamado, você pode enviar qualquer dado como segundo parâmetro.

Eu não usaria a function de um controlador para outro. Uma abordagem melhor seria mover a function comum para um serviço e depois injetar o serviço em ambos os controladores.

Se o controlador two estiver nested no controlador One .
Então você pode simplesmente ligar:

 $scope.parentmethod(); 

Angular irá procurar a function parentmethod começando com o escopo atual e até atingir o rootScope .

Você pode usar events para fornecer seus dados. Código assim:

 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) { ... }); }]); 

A melhor abordagem para você se comunicar entre os dois controladores é usar events.

Veja a documentação do escopo

Neste check out $on , $broadcast e $emit .

Se você gostaria de executar a function parentmethod do controlador pai dentro de um controlador filho, chame-o:

 $scope.$parent.parentmethod(); 

Você pode experimentar aqui