【发布时间】:2015-08-17 12:17:10
【问题描述】:
所以我在一个模块中有 2 个控制器,每个控制器都有自己的职责,因为我正在制作一个实时功能,所以如果正在执行一个操作,我需要让两个控制器的数据保持同步。我遇到了 angular 的 $emit 和 $on,它说我可以通过发出事件来触发函数。我已按照有关如何实施触发器的说明和指南进行操作,但不知何故我无法使其工作。
基本上我想做的是,我有 2 个控制器,CtrlA 和 CtrlB。这两个控制器都有很多功能,比如CtrlAactionA、CtrlAactionB、CtrlBactionA、CtrlBactionB。根据stackoverflow中的一些其他指南,当CtrlB中的CtrlBactionB被调用时,它应该同时触发CtrlA中的CtrlAactionB,但我无法设法触发这样的动作。它只会在CtrlB中执行CtrlBactionB。
app.controller('CtrlA', function($scope) {
$scope.ctrlAdataA;
$scope.ctrlAdataB = 0;
$scope.ctrlAactionA = function (){
$scope.ctrlAdataA = 'This is the original data.';
}
$scope.ctrlAactionB = function (){
$scope.ctrlAdataA = 'Someone clicked the button in B so I changed!';
$scope.ctrlAdataB++;
}
$scope.$on('buttonClicked', function(event, args) {
$scope.ctrlAactionB();
});
});
app.controller('CtrlB', function($scope) {
$scope.ctrlBdataA;
$scope.ctrlBdataB = 0;
$scope.ctrlBactionA = function (){
$scope.ctrlBdataA = 'I\'ve been clicked!';
$scope.ctrlBdataB++;
$scope.$emit('buttonClicked');
}
});
这是我为模拟我描述的场景而制作的plunkr 文件。
【问题讨论】:
标签: angularjs