我需要在一个Angular应用程序中添加一个事件监听器。一个外部插件会监听该事件以触发某些操作。
我做了这个:
$window.addEventListener('itemLoaded', itemLoaded, false);
代码可以运行,但我无法找到一种方法在状态改变时删除该事件(我使用ui-router)。
您是否了解在Angular中添加和删除此事件的更好方法,尤其是在我的状态更改时?
感谢您的帮助。
我需要在一个Angular应用程序中添加一个事件监听器。一个外部插件会监听该事件以触发某些操作。
我做了这个:
$window.addEventListener('itemLoaded', itemLoaded, false);
代码可以运行,但我无法找到一种方法在状态改变时删除该事件(我使用ui-router)。
您是否了解在Angular中添加和删除此事件的更好方法,尤其是在我的状态更改时?
感谢您的帮助。
如果这段代码是在控制器内调用的,你可以监听一个 $scope.$destroy()
事件,在控制器卸载时移除监听器。
// Inside some controller
var listener = function listen() {...};
var element = document;
element.addEventListener('click', listener)
$scope.$on('$destroy', function(event, object) {
element.removeListener('click', listener);
})
here's the plnkr example
$state.current.url
检查当前状态。如果当前URL更改,则可以删除事件。您甚至可以在路由文件中使用$watch
来检查状态是否已更改。