2014-01-27 67 views
1

我在單頁應用中使用Marionette和Backbone來管理視圖的打開和關閉。取消已關閉的Marionette Backbone視圖中的超時

當項目視圖關閉時(例如,其模型已從綁定集合中刪除)時,itemview中的事件被正確銷燬。

但是,在我使用jquery動畫或setTimeout的情況下,'success'回調仍然被觸發並且不變觸發一個異常,因爲他們正在查找的DOM元素不再在頁面上。

例如

setTimeout(function() { 
     self.ui.$loading.fadeIn(528); 
    }, 1000); 

什麼是正確的方式來處理這些案件?我應該簡單地檢查一下DOM元素是否存在,或者使用try catch,還是我沒有意識到內置於Marionette中的更優雅的解決方案?

推遲承諾會更好嗎?

回答

0

將它們綁定到視圖並使用onBeforeClose事件刪除它們。

class TheView extends Marionette.ItemView 
    initialize: -> 
     @doomsday = setTimeout -> 
      console.log 'boom' 
     , 3000 

    onBeforeClose: -> 
     @doomsday.clearTimeout() 

類似的東西應該工作,但它取決於你保留所有的超時或間隔檢查

相關問題