2016-11-30 45 views
1

我正在開發一個用於進行在線測驗的Web應用程序。我正在使用這個平均堆棧。在我的在線測試控制器,我已經使用了許多事件偵聽器,如以角度添加控制器特定文檔eventlistener

document.addEventListener("visibilitychange", onchange); 
document.webkitIsFullScreen etc.. 

但我的問題是,這一功能轉移到其他控制器,因爲這是全球eventLisners後仍在執行。

任何人都可以建議我最好的方法嗎?

回答

1

您需要刪除事件偵聽器時的範圍被破壞或者你把它移動到其它控制器之後':

$scope.$on('$destroy',function() { 
    document.removeEventListener('visibilitychange',onchange); 
}); 

它總是一個好主意來處理移除事件偵聽器時的組件被破壞,特別是對於大型應用程序,因爲這可能是單頁應用程序的內存泄漏問題的主要原因。

+0

謝謝bluetoft。 將這個邏輯寫入控制器是否是一個好習慣? 或者我可以使用指令或服務嗎? –

+0

@kiranGopal我通常在控制器中連接這種東西,但是如果你做得足夠的話,可以看到你可以輕鬆地編寫一個服務來處理它。 – bluetoft