如何在AngularJS中从另一个控制器调用函数?

26 浏览
0 Comments

如何在AngularJS中从另一个控制器调用函数?

这个问题已经有答案了

一个AngularJS控制器可以调用另一个控制器吗?

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

admin 更改状态以发布 2023年5月20日
0
0 Comments

我不会把一个控制器的函数用在另一个控制器中。更好的方法是将公共函数移至服务中,然后在两个控制器中注入该服务。

0
0 Comments

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

所以在您的情况下,您想在控制器"Two"内调用控制器"One"的方法,正确的方法是:

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时,您可以将任何数据作为第二个参数发送。

0