2011-12-12 27 views
2

我有一個骨幹集合...在初始化方法我正在做這個....我想重新渲染一個視圖,當這個集合有一個項目添加到它。Backbone.js可以在集合的添加處理程序中的視圖上調用方法嗎?

initialize: function (models, options) { 

     this.bind('add', function() { 
      NS.discussionView.reRender(); 
     }); 
    } 

這個解決方案完美地工作,但mycoworker說我完全反對什麼主幹設計要做。有沒有更好的方法來做到這一點,或者這是一個好習慣嗎?這些問題有點主觀,我真的想知道我應該如何正確地做這樣的事情。感謝您的任何反饋或建議。

迴應答案... 那麼對象模型更深。 discussionView有一個discussionModel,它有一個主題屬性,它是主題模型的主幹集合。每個主題都有回覆模型的回覆集合。當回覆添加到主題時,我需要再次呈現討論視圖。我如何正確設置鏈條?

回答

3

簡單地反轉依賴關係:視圖可能並且應該依賴於模型,而不是相反。這樣一個模型可以被多個視圖使用(簡單,詳細等),您可以在不修改模型的情況下添加視圖。

model.bind('add', function() { 
    this.render(); 
}); 

也更喜歡render()方法名稱遵循Backbone.js命名約定。

+0

那麼對象模型更深。 discussionView有一個discussionModel,它有一個主題屬性,它是主題模型的主幹集合。每個主題都有回覆模型的回覆集合。當回覆添加到主題時,我需要再次呈現討論視圖。我如何正確設置鏈條? – Hcabnettek

+0

這工作得很好。當我創建第一級子視圖時,我爲每個實例提供了一個parentView屬性。我綁定每個主題添加處理程序的回覆集合,並調用this.parentView.render()。奇蹟般有效。謝謝! – Hcabnettek

相關問題