2016-04-19 30 views
0

我需要將一個事件偵聽器添加到Angular應用程序中。外部插件正在監聽該事件以觸發某些操作。AddEventListener與Angular並將其刪除

我這樣做:

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

它的工作原理,但我沒有找到一個方法來消除,當我改變我的狀態事件(我使用的UI路由器)。

如果我的狀態發生變化,您是否知道更好的方式來添加該事件並將其刪除?

感謝您的幫助。

回答

2

如果在控制器內部調用此代碼,您可以監聽$scope.$destroy()事件,然後在卸載控制器時刪除監聽器。

你從哪裏打這個電話?

+0

是的,我打電話到控制器。你可以給我寫代碼來刪除該事件嗎?我嘗試了'removeEventListener()',但它似乎不工作... –

+1

有很好的提到它在這裏.. [stack post](http://stackoverflow.com/questions/14416894/provide-an-example-of-範圍-破壞事件)。您可能必須將「itemLoaded」函數附加到控制器作用域,然後在該$ destroy事件中通過名稱將其刪除。 這是最好的我現在可以拿出.. [plnkr](http://plnkr.co/edit/gosqMH7abdQXAOUTOJZd?p=info) – 4UmNinja

+1

' $ scope。$ on('$ destroy',function (e){window.removeEventListener('itemLoaded',itemLoaded); }); ' 完美的作品:) –

0

如果您使用的是路由器,您可以使用$state.current.url來檢查當前狀態。如果當前的網址更改,您可以刪除該事件。您甚至可以在路由文件中使用$watch來檢查狀態是否已更改

+0

感謝您的提示,我的問題是更相關的代碼,以刪除我的事件偵聽器,我找不到... –

相關問題