我有一个有自定义指令的路由。在它的链接功能中,我在window
对象上侦听一个事件,该事件调用scope
上的方法。
问题在于,如果每次将具有此指令的路由重定向到时,它将运行链接函数,从而导致将多个事件侦听器添加到window
事件中。
我该如何避免这种情况?我尝试使用编译功能,但它无法访问范围,因此我无法在其中调用scope.myMethod()
。
感谢。
答案 0 :(得分:2)
我建议您在指令范围内使用$ destroy事件(请参阅scope documentation中的$ 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
});
}
};
}]);
应该做的伎俩。