2011-10-03 75 views
1

我似乎寫這樣的事情渲染視圖時...這是backbone.js中的正常情況嗎?

_.each @model.nestedcollection.models, (nestedmodel) -> 

,我覺得在某些時候我可能會需要編寫類似...

_.each @model.nestedcollection.models, (nestedmodel) -> 
    _.each nestedmodel.nestedcollection.models, (nestednestedmodel) -> 
     #pass into new view 

有時。

這是正常的還是應該以更好的方式處理這個問題?

+0

這個相關的問題有一個有用的答案:http://stackoverflow.com/questions/7641707/best-pattern-to-have-models-listen-to-nested-models-and-collections –

+1

@Mark這是我的其他題。 :) – boom

+1

我應該注意到誰在下次要求O_o –

回答

4

這是正常現象。骨幹文檔提供了一個list of underscore methods for iteration。您會在列表頂部看到_.each。你應該瞭解這些方法(如果你還沒有)並使用最合適的方法。你的第二個例子可能是使用_.each作爲你的外部迭代器和一個更具體類型的迭代器(比如select,detect,reject或reduce)作爲你的內部迭代器的一個很好的用例。根據您的意圖選擇適當的迭代器函數。

0

更新 我更喜歡Derick處理您的問題的具體答案。我的建議太模糊了。

我不熟悉骨幹之外的審查文檔。

sorta OOP: 您可以創建一個對象,該對象自動遍歷它組成的內部模型並呈現它們。這樣,它們的任何組合都會自動遍歷它們的內部模型並渲染它們。

sorta功能: 或者,您可以將渲染函數傳遞給所有嵌套模型,並讓它們各自使用它。

4

除了已經說過的內容之外,有一點需要注意的是主幹文檔中列出的功能可直接在主幹集合上獲得。

您不必調用_.each @model.nestedcollection.models, (model) ->,您可以改爲調用@model.nestedcollection.each (model) -> ...或任何正確的coffeescript語法。

在功能上是一樣的,因爲它代表下劃線的each方法,但由於它直接在集合上,所以鍵入和讀取更容易一些。

+1

在各自之後放下逗號,就是這樣。 – tokland

+1

哦,對,在'_.each'的調用中,模型是一個參數,但在調用'collection.each'時,除了 - >回調函數之外,沒有其他參數。 –

相關問題