AngularJS事件监听器内部指令链接函数在每次路由更改时触发
我有一条带有自定义指令的路线。在它的link函数中,我监听AngularJS事件监听器内部指令链接函数在每次路由更改时触发,angularjs,Angularjs,我有一条带有自定义指令的路线。在它的link函数中,我监听窗口对象上的事件,该对象调用范围上的方法 问题是,如果每次将具有此指令的路由重定向到,它都会运行link函数,导致多个事件侦听器被添加到窗口事件中 我怎样才能避免这种情况?我尝试使用compile函数,但它没有访问scope的权限,因此无法在其中调用scope.myMethod() 谢谢。我建议您在指令的范围内使用$destroy事件(请参阅中的$destroy),并在那里进行必要的清理。诸如此类: angular.directive('
窗口
对象上的事件,该对象调用范围
上的方法
问题是,如果每次将具有此指令的路由重定向到,它都会运行link函数,导致多个事件侦听器被添加到窗口
事件中
我怎样才能避免这种情况?我尝试使用compile函数,但它没有访问scope的权限,因此无法在其中调用scope.myMethod()
谢谢。我建议您在指令的范围内使用$destroy事件(请参阅中的$destroy),并在那里进行必要的清理。诸如此类:
angular.directive('MyDirective', ['$rootScope', function($rootScope) {
return {
restrict: 'EAC',
link: function(scope, element, attrs) {
.... //Code of your directive
scope.$on('$destroy', function() {
console.log("destroy");
//clean up - removeListeners
});
}
};
}]);
应该会的。谢谢你,尼古拉斯。在编译阶段添加侦听器(如果可能的话)不会阻止这一点,对吗?我总是要叫人清理$destroy?