[英]Angularjs $on called twice
所以我有这种情况,其中一个controller
正在emitting
event
,而另一个controller
有listener
。 这是代码:
在controller A
中,我有这个方法:
$scope.process = function () {
var taskName = 'process';
$scope.$emit('process', taskName);
}
在controller B
中,我有这个:
$rootScope.$on('process', function (event, taskName) {
//Do something here
});
现在,每当我访问应用程序上的其他页面并返回此页面时,都会创建两次process
侦听器。 我不能使用controller
scope 因为event
是从其他controller
emitted
的。 完成任务后如何销毁侦听器? 我也试过$scope.$destroy()
。 真的不行。 这样做的正确方法是什么?
我在Angularjs 1.4.7
上。
通常你用不同的方式来做:
$rootScope.$broadcast(...)
...
$scope.$on(...)
然后,您无需取消订阅。 如果您出于某种原因确实需要订阅 $rootScope,那么:
var deregister = $scope.$on(...);
...
deregister(); // destory that listener
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.