2016-02-26 173 views
0

我仍然在學習Backbone.js,我不確定在每次渲染model與渲染collection之間有什麼優缺點。何時渲染模型以及何時渲染集合 - Backbone.js

我看過一個例子,他們一次渲染一個model。例如:

//in parent view  
var view = new SectionView({model: section}); 

this.$("#section-list").append(view.render().el); 



//in child view, render() 

this.$el.html(this.template(this.model.toJSON())); 

與模板類似:

<script type="text/template" id="section-template"> 
     <section class="view" id=section-<%- id %>> 
       <label><%- height %></label> 
       <label><%- color %></label> 
       <label><%- id %></label> 
       <button class="destroy">Delete</button> 
     </section> 
</script> 

但是,我也看到的例子,他們使整個collection像這樣post

非常感謝,如果有人能告訴我什麼時候使用以及它們的優點/缺點是什麼。

預先感謝您。

回答

2

您不渲染模型或集合,而是渲染視圖。視圖通常包含一個模型或一個集合,或者較少見的是兩者的混合。所以真正的問題是視圖應該與模型還是集合相關聯?答案應該是自然而然的。

假設您有涉及庫的應用程序。您有一個book模型,一個books集合,因此最終將以book視圖和一個books視圖結束。 books視圖應更多地按語義命名,如bookshelf視圖。當您渲染bookshelf視圖時,您將遍歷其books集合,並將每個book模型分配給新的book視圖,然後渲染該視圖。 bookshelf視圖會填充book視圖。

我看到的常見模式是充當子視圖容器的單個視圖。容器視圖與集合關聯,而子視圖與模型關聯。呈現容器視圖,這會導致呈現集合中的每個模型。

+0

謝謝Eric。比方說,我有一個使用jQuery UI對話框的面板,它有一個添加按鈕,滑塊等,面板也需要是一個視圖嗎?謝謝。 – HuorCulnamo

+0

是的,它是有意義的,該面板是一個視圖。骨幹視圖充當小型小部件的容器。通常,視圖是應用程序的功能獨立部分。所以使添加按鈕或滑塊單獨的視圖將是矯枉過正。 –