从另一个控制器调用控制器中的一个函数

时间:2014-01-15 22:26:28

标签: javascript angularjs

我需要在angularjs文件中有一个控制器在同一个javascript文件中的另一个控制器上调用刷新。

我在以下代码集中创建了一个非常简化的版本。基本上,当我单击下面示例中的按钮1时,我希望它调用click1函数,然后在第二个控制器上使用click1函数调用click2函数。当你点击第二个控制器中的click2功能时,情况恰恰相反。

HTML

<div ng-app>
    <div ng-controller="Control1">
        <div>{{count1}}</div>
        <button ng-click="click1()">Call both click methods from controller 1</button>
    </div>
    <div ng-controller="Control2">
        <div>{{count2}}</div>
        <button ng-click="click2()">Call both click methods from controller 2</button>
    </div>
</div>

的Javascript

function Control1($scope) {
    $scope.count1 = 0;

    $scope.click1 = function () {
        $scope.count1++;
    }
}

function Control2($scope) {
    $scope.count2 = 0;

    $scope.click2 = function () {
        $scope.count2 = $scope.count2 + 2;
    }
}

我还为此创建了jsfiddle

1 个答案:

答案 0 :(得分:2)

你将不得不使用范围广播或发射...像

这样的东西
function Control1($scope, $rootScope) {
    $scope.count1 = 0;
    $scope.$on('clicked2', function() {
        $scope.count1++;
    });
    $scope.click1 = function () {
        $scope.count1++;
        $rootScope.$broadcast('clicked1');
    }
}

function Control2($scope, $rootScope) {
    $scope.count2 = 0;
    $scope.$on('clicked1', function() {
        $scope.count2 = $scope.count2 + 2;
    })
    $scope.click2 = function () {
        $scope.count2 = $scope.count2 + 2;
        $rootScope.$broadcast('clicked2');
    }
}

http://jsfiddle.net/jX3kh/ 点击此处了解更多信息http://docs.angularjs.org/api/ng.$rootScope.Scope#methods_$broadcast