我需要將一個事件偵聽器添加到Angular應用程序中。外部插件正在監聽該事件以觸發某些操作。AddEventListener與Angular並將其刪除
我這樣做:
$window.addEventListener('itemLoaded', itemLoaded, false);
它的工作原理,但我沒有找到一個方法來消除,當我改變我的狀態事件(我使用的UI路由器)。
如果我的狀態發生變化,您是否知道更好的方式來添加該事件並將其刪除?
感謝您的幫助。
我需要將一個事件偵聽器添加到Angular應用程序中。外部插件正在監聽該事件以觸發某些操作。AddEventListener與Angular並將其刪除
我這樣做:
$window.addEventListener('itemLoaded', itemLoaded, false);
它的工作原理,但我沒有找到一個方法來消除,當我改變我的狀態事件(我使用的UI路由器)。
如果我的狀態發生變化,您是否知道更好的方式來添加該事件並將其刪除?
感謝您的幫助。
如果在控制器內部調用此代碼,您可以監聽$scope.$destroy()
事件,然後在卸載控制器時刪除監聽器。
你從哪裏打這個電話?
如果您使用的是路由器,您可以使用$state.current.url
來檢查當前狀態。如果當前的網址更改,您可以刪除該事件。您甚至可以在路由文件中使用$watch
來檢查狀態是否已更改
感謝您的提示,我的問題是更相關的代碼,以刪除我的事件偵聽器,我找不到... –
是的,我打電話到控制器。你可以給我寫代碼來刪除該事件嗎?我嘗試了'removeEventListener()',但它似乎不工作... –
有很好的提到它在這裏.. [stack post](http://stackoverflow.com/questions/14416894/provide-an-example-of-範圍-破壞事件)。您可能必須將「itemLoaded」函數附加到控制器作用域,然後在該$ destroy事件中通過名稱將其刪除。 這是最好的我現在可以拿出.. [plnkr](http://plnkr.co/edit/gosqMH7abdQXAOUTOJZd?p=info) – 4UmNinja
' $ scope。$ on('$ destroy',function (e){window.removeEventListener('itemLoaded',itemLoaded); }); ' 完美的作品:) –