javascript - 使用 Angular AddEventListener 并将其删除

标签 javascript angularjs angular-ui-router

我需要将事件监听器添加到 Angular 应用程序中。外部插件正在监听该事件以触发某些操作。

我这样做了:

$window.addEventListener('itemLoaded', itemLoaded, false);

它可以工作,但是当我更改状态(我使用 ui-router)时,我找不到删除该事件的方法。

如果我的状态发生变化,你知道在 Angular 中添加和删除事件的更好方法吗?

感谢您的帮助。

最佳答案

如果在 Controller 内部调用此代码,您可以监听 $scope.$destroy() 事件,然后在 Controller 卸载时删除监听器。

// Inside some controller
var listener = function listen() {...};
var element = document;

element.addEventListener('click', listener)

$scope.$on('$destroy', function(event, object) { 
    element.removeListener('click', listener);
})

这是 plnkr example

关于javascript - 使用 Angular AddEventListener 并将其删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36711107/

相关文章:

angularjs - 无法让 Angular html5mode 和 UrlRewriteFilter 与某些 URL 一起工作

angularjs - Node js中的二级路由更改根目录

javascript - Series 中的 Promise 没有按顺序执行

javascript - 如何阻止对象生成相同内容的附加副本?

angularjs - 为什么要给 "abstract: true"状态一个 url?

javascript - 在 HTML 中打印为 <pre> 时如何用新行替换 `\n`?

javascript - 为什么第二次使用 $state.transitionTo() 会导致 "TypeError: Cannot read property ' $$nextSibling' of null"?

javascript - Node JS 请求和 Cheerio HTML 页面错误

javascript - 函数式风格的分块对象(Underscore/Lodash)

angularjs - 如何更改子窗口文本框中反射(reflect)表中父窗口记录的值?