在我的angularjs应用程序中,我有一个带有以下代码的指令:
listener = $rootScope.$on('currentDate', function(e, now) {
console.log('date updated.')
}, true);
$scope.$on('$destroy', function() {
console.log('event destroyed.')
listener();
});

它是一个监听器,等待来自rootcope的广播,每秒通过当前日期。因为我不希望这个监听器在指令被销毁后继续存在,所以我在destroy事件中调用了监听器返回函数(它应该取消绑定监听器)。
我可以在日志中看到调用destroy,但是每秒都会调用侦听器。
有没有更好的方法来实现这一目标?是否使用rootScope"角度友好"?
答案 0 :(得分:0)
你并没有在rootScope上销毁它:
listener = $rootScope.$on('currentDate', function(e, now) {
console.log('date updated.')
}, true);
$rootScope.$on('$destroy', function() {
console.log('event destroyed.')
listener();
});
所以看到你的评论后,考虑一下,这可能会更好:
link(scope, element, attrs, ngModel) {
const listener = scope.$on('currentDate', function(e, now) {
console.log('date updated.')
}, true);
scope.$on('$destroy', () => {
listener();
});
}
另一个问题是,如果你在一个指令中,那么也许你不应该使用$ rootScope,而是使用'scope'(使用上面的例子)。