所以我有這種情況,一個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范圍,因為event從emitted其他controller. 完成任務后如何銷毀偵聽器?我也試過了$scope.$destroy()。真的不行。這樣做的正確方法是什么?
我在Angularjs 1.4.7。
uj5u.com熱心網友回復:
通常你用不同的方式來做:
$rootScope.$broadcast(...)
...
$scope.$on(...)
然后,您無需取消訂閱。如果您出于某種原因確實需要訂閱 $rootScope,那么:
var deregister = $scope.$on(...);
...
deregister(); // destory that listener
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/428404.html
上一篇:從api回應拆分日期和時間
