我需要在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。
答案 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。