2013-07-01 116 views
2

目前我處理我的申請Backbone.js的殭屍。我已閱讀本關於殭屍exelent文章http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/和擴展我的這個項目:Backbone.js再次渲染視圖還是重新創建?

Backbone.View.prototype.close = function(){ 
    this.remove(); 
    this.unbind(); 
    if (this.onClose){ 
    this.onClose(); 
    } 
} 

我的問題是,如何恢復這種密切的過程?我可以只在對象上調用渲染,還是必須通過用新實例覆蓋它來重新啓動對象?

回答

1

this.remove()調用刪除視圖的el從DOM:

// Remove this view by taking the element out of the DOM, and removing any 
// applicable Backbone.Events listeners. 
remove: function() { 
    this.$el.remove(); 
    this.stopListening(); 
    return this; 
}, 

所以你必須重新創建和重新綁定所有的DOM事件。你也將失去所有在this.unbind()this.stopListening()通話骨幹事件綁定。再有就是無論你onClose做(如果有的話),所以你需要「撤消onClose」的方法。

基本上,不要嘗試重新使用視圖,只要銷燬它們(通過適當的清理)並創建新的視圖。你的觀點應該足夠輕量,以至於殺死和重建它們都不重要。

+0

我如何正確地摧毀一個看法?刪除並設置爲空? –

+0

德里克的'close'是一種合理的方法,那麼只要確保你沒有實例化的視圖中隱藏的任何地方的任何引用。 –