繁体   English   中英

Angularjs $on 调用了两次

[英]Angularjs $on called twice

所以我有这种情况,其中一个controller正在emitting event ,而另一个controllerlistener 这是代码:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM