我有一個列表顯示在一個頁面上的長列表中的〜100個產品。每個產品屬於一個類別,我有大約5個類別。每個產品都有一個category_id。Backbone.js性能 - 添加一個類到嵌套集合的第一個和最後一個模型
我想爲類別的每個第一個產品和'.last'類的每個最後一個產品添加'.first'類。
性能是關鍵,我自己想出了一些解決方案,但寫得很差,太麻煩。
示例數據:
products = {
id: 1, category_id: 1;
id: 2, category_id: 1;
id: 3, category_id: 1;
id: 4, category_id: 2;
id: 5, category_id: 2;
id: 6, category_id: 2;
id: 7, category_id: 3;
id: 8, category_id: 3;
...
}
結果我在尋找:
<ul>
<li class='first' id='1'></li>
<li id='2'></li>
<li class='last' id='3'></li>
<li class='first' id='4'></li>
<li id='5'></li>
<li class='last' id='6'></li>
<li class='first' id='7'></li>
<li id='8'></li>
...
</ul>
編輯:謝謝你的幫助@niemand!我用groupBy,這是我迄今爲止。這是一個很好的方法來解決這個問題,表現明智嗎?
window.firsts = []
window.lasts = []
@grouped = _.groupBy(@collection.toJSON(), 'category_id')
_.each @grouped, (group) ->
window.firsts.push new App.Models.Piece(_.first(group)).get('id')
window.lasts.push new App.Models.Piece(_.last(group)).get('id')
這樣我可以檢查是否window.firsts或window.lasts包含當前模型的ID,當我呈現出每個模型視圖和運用正確的類。如果有更高性能的方法來解決這個問題,我很想知道!
爲什麼你不告訴我們你已經嘗試過什麼? – m90