我有兩個主幹視圖類fileView和userDetails。去除未使用類的主幹事件(事件被觸發兩次)
在Web應用程序,我使用的文件查看渲染的所有文件
在另一頁我用的UserDetails一個頁面視圖來顯示用戶的詳細信息,並創建文件查看的新實例也列出用戶文件。
在我瀏覽這兩個頁面後,我的事件被觸發兩次(一次爲filesView,一次爲userDetails.fileView)。
如何刪除userDetails.fileView的事件?我閱讀文檔並嘗試了迄今爲止沒有運氣的任何事情。
我有兩個主幹視圖類fileView和userDetails。去除未使用類的主幹事件(事件被觸發兩次)
在Web應用程序,我使用的文件查看渲染的所有文件
在另一頁我用的UserDetails一個頁面視圖來顯示用戶的詳細信息,並創建文件查看的新實例也列出用戶文件。
在我瀏覽這兩個頁面後,我的事件被觸發兩次(一次爲filesView,一次爲userDetails.fileView)。
如何刪除userDetails.fileView的事件?我閱讀文檔並嘗試了迄今爲止沒有運氣的任何事情。
與其重新發明車輪,答案在這裏。
Derick Bailey: Managing event removal
我用這個approack在我所有的骨幹網應用程序,但完全學分制必須去德里克·貝利:)
感謝德里克!
我覺得你有兩點要實現這一點:
這裏的更詳細一些英特爾: http://addyosmani.github.io/backbone-fundamentals/#memory-management
處理與最新版本的骨幹事件的正確方式是listenTo()
功能。它的行爲就像是一個常規的事件監聽器,但它讓你調用這個函數的對象知道他們正在監聽的內容。這樣,一旦對象不再使用(例如當刪除View時),您就可以自動清理。如果需要,您當然可以撥打stopListening()
手動觸發此行爲。
實際上移除一個調用其remove()函數的視圖也會停止監聽通過listenTo()監聽的任何事件,因此在這種情況下不需要使用dispose函數。 Backbone.js中的相關代碼http://backbonejs.org/docs/backbone.html#section-128 – namero999
哦,是的,你是對的 –