如何从响应中的属性加载骨干模型?

时间:2013-07-05 23:02:50

标签: jquery backbone.js

我在将odata响应绑定到我的模型时遇到了麻烦。最初我有一个简单的模型和一个简单的响应,工作正常。但后来我把我的回答改成了odata格式。我的骨干模型是:

    var UserCard = Backbone.Model.extend({
    defaults: {
        ...
    }
});

及其相关集合:

    var UserCards = Backbone.Collection.extend({
    model: UserCard,
    url: '/odata/UserCards'
});

现在这个集合正在填充,直到我改变了现在看起来如下的响应:

{
 "odata.metadata":"http://website.com:53176/odata/$metadata#UserCards",
 "value":[{...},{...}...]
 }

当我调用collection.fetch方法时,它会尝试将上述内容放在我的模型中,该模型与此响应不兼容。然而,该模型与上述json的value属性中包含的内容兼容。

我想知道是否有一种方法可以从value属性加载我的模型而不是完整的响应?

1 个答案:

答案 0 :(得分:2)

您可以覆盖模型/集合的parse()方法。例如:

parse: function(data) {
    return data.value;
}

parse是Backbone在从服务器检索数据时调用的方法,请参阅Backbone docs here