从另一个控制器调用函数

时间:2015-03-19 14:12:39

标签: javascript angularjs

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

    app.controller('tableCtrl', ['$scope', function (scope) {
       scope.loadTable = function() {
       //some code
       };
    });

    app.controller('secondCtrl', ['$scope', function (scope) {
       scope.buttonClick = function() {
       //call loadTable from tableCtrl
       };
    });

2 个答案:

答案 0 :(得分:3)

尝试$emit-$on(发布 - 订阅)机制。

app.controller('tableCtrl', ['$scope', function (scope) {
    scope.loadTable = function() {
        //some code
    };

    $rootScope.$on('load-table', function (event, arg1, arg2) {
        // now trigger the method.
        scope.loadTable();
    });
});

app.controller('secondCtrl', ['$scope', function (scope) {
    scope.buttonClick = function() {
        //call loadTable from tableCtrl
        //emit the event
        $rootScope.$emit('load-table', 'arg1', 'arg2');
    };
});

答案 1 :(得分:1)

您应该使用

等服务
app.factory('tableService', [function () {

   return {
       loadTable : function() {
          //some code
       }
   };
});


app.controller('tableCtrl', ['$scope', 'tableService', function (scope, tableService) {

});

app.controller('secondCtrl', ['$scope', 'tableService', function (scope, tableService) {
   scope.buttonClick = function() {
       tableService.loadTable();
   };
});

您的tableCtrl需要使用服务上的其他功能保存任何数据。