如何从angularjs从另一个控制器调用一个函数?

我需要在另一个控制器angularJS调用函数。请问如何提前帮助我

代码:

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

控制器之间的通信是通过$emit + $on / $broadcast + $on方法完成的。

所以在你的情况下,你想调用控制器“一”内的控制器“两”的方法,正确的方法是:

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

在调用$rootScope.$emit ,可以发送任何数据作为第二个参数。

我不会使用从一个控制器到另一个控制器的function。 一个更好的方法是将公共function移到服务上,然后在两个控制器中注入服务。

如果two控制器嵌套One控制器中。
那么你可以简单地调用:

 $scope.parentmethod(); 

Angular将search从当前作用域开始的parentmethod函数,直到它到达rootScope

您可以使用事件来提供您的数据。 这样的代码:

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

在两个控制器之间进行通信的最佳方法是使用事件。

请参阅范围文档

在这个检查$on$broadcast$emit

如果您想要在子控制器内执行父控制器的parentmethod函数,请调用它:

 $scope.$parent.parentmethod(); 

你可以在这里试试