我在controllerOne上的$ rootScope上有一个事件:
$rootScope.$on('eventName', function(event, args) {
invoke function A;
});
和controllerTwo,我发出事件:
$scope.$emit('eventName', args);
如果我第一次进入controllerOne,当我发出事件时,函数A只运行一次;当我第二次进入controllerOne时,我发出事件然后函数A运行多次,可能是两次或三次
如何重复阻止$ rootScope上的绑定事件
答案 0 :(得分:4)
使用$destroy
事件正确取消订阅处理程序:https://stackoverflow.com/a/18856665/4573999
适应您的情况:
var cleanUp = $rootScope.$on('eventName', function handler(event, args) {
invoke function A;
});
$scope.$on('$destroy', function () {
cleanUp();
});