1

我们从一个数组创建了一个模型集合,如下所示。我们的问题是:集合是否会保留与原始数组中相同的元素/模型顺序?换句话说,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.
4

2 回答 2

3

从我能收集到的所有信息来看,是的 aCollection保留了元素的原始顺序。

您可以阅读带注释的收藏源,以亲眼看看它不是不时地神奇地洗牌。at, unshift, pop,等函数push非常清楚地表明了这一点。

您可以阅读带注释的源代码parse,用于在例如fetch-oprations 之后解析来自服务器的响应:

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

确定传递给您的收藏的任何内容都不会在任何地方洗牌。resp 将被传递给add-function 以自然顺序处理响应。

于 2012-08-17T07:25:50.543 回答
1

http://backbonejs.org/#Collection中所述

collection.at(index)按插入顺序检索模型。

于 2012-08-17T06:43:10.537 回答