2012-08-17 55 views
1

我們從下面給出的數組中創建了一個模型集合。我們的問題是:Collection將保持與原始數組中存在的元素/模型相同的順序嗎?換句話說,是否在Collection中保證相同的順序(源數組)?骨幹:集合內部模型的順序

var colorsData = [ 
    { 
     name: 'red' 
    }, 
    { 
     name: 'blue' 
    }, 
    { 
     name: 'green' 
    }, 
    ..... 
    ..... 
    ..... 
    //other colors 
]; 

    var Color = Backbone.Model.extend({ 
     defaults: { 
      name: 'white' 
     } 
    }); 

    var ColorCollection = Backbone.Collection.extend({ 
     model: Color 
    }); 

    var colorCollection1 = new ColorCollection(colorsData); //creating a collection from the source array colorsData. 

回答

3

從我可以收集的所有信息中,保留原始元素順序是Collection

您可以閱讀collection的註釋來源,以親眼看看它不會隨時都被神奇洗牌。諸如at,unshift,pop,push等的這些功能對此是非常明顯的指示。

您可以閱讀parse帶註釋的源,它是用來解析從服務器例如fetch -oprations後的反應:

parse: function(resp, xhr) { 
    return resp; 
}, 

要確定,無論是到您的收藏通過將不隨時隨地洗牌。 resp將被傳遞到add-函數,該函數將按自然順序處理響應。

+1

是的。如果將一組模型放入集合中,它將按照該順序添加。通常我唯一能想到的不是默認行爲的地方是如果你設置了'comparator()'函數。例如。比較器通過顏色十六進制等方式來保存您的集合。當定義比較器時,添加模型會根據排序規則將它們插入到正確的位置。 – jmk2142 2012-08-17 07:55:25

+0

好點,+1 – jakee 2012-08-17 12:16:35