我在将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
属性加载我的模型而不是完整的响应?
答案 0 :(得分:2)
您可以覆盖模型/集合的parse()
方法。例如:
parse: function(data) {
return data.value;
}
parse
是Backbone在从服务器检索数据时调用的方法,请参阅Backbone docs here