如何重写Backbone集合以返回子属性中的模型

时间:2013-09-07 20:06:39

标签: javascript backbone.js

我有一个返回模型集合的API,但它不是Backbone所期望的传统格式 - 一组模型。相反,集合中有一些全局属性,然后模型位于分配给集合属性的数组中。像这样:

{
    foo: 'bar',
    models: [
        { id: 1, prop1: 'abc' },
        { id: 2, prop1: 'xyz' },
        { id: 3, prop1: '123' }
    ]
}

我无法更改API,因此我必须使用此数据格式。如何按摩数据,以便Backbone集合只获得模型数组?我和模型有类似的情况,只是写了一个自定义的toJSON()方法,它返回带有模型数据的正确属性,但这似乎不适用于此。

1 个答案:

答案 0 :(得分:2)

你需要覆盖你的集合parse method,在那里你得到整个响应对象,你需要返回一个Backbone将用来填充你的集合的数组:

var MyCollection = Backbone.Collection.extend({
    parse: function(response) {
        return response.models;
    }
});