作为骨干的新手,我在从服务器获取数据时遇到了问题。
服务器响应始终处于结构中 { ERRCODE:XXX, data:{object array} }
我在模型和集合中定义了解析:
parse:funciton(response){
if(100==response.errcode){
return response.data;
}
所以当我从模型中保存/获取时,它可以正常工作。
但是,当我从收藏中获取时,事情将无法按照我的预期进行。 首先在集合中解析响应,然后在模型中再次解析。 我希望集合可以将对象传递给新模型,而无需在模型级别再次解析。
我尝试了fetch {parse:false}。但是,这将在集合和模型级别禁用解析。
我可以在集合级别调用fetch时在模型级别禁用解析吗?谢谢!
答案 0 :(得分:1)
你可以简单地将另一个选项传递给你的集合获取方法,如下所示:
collection.fetch({parseModel: false});
然后检查模型的parse
方法是否存在此选项:
parse: function(resp, options) {
if(!options.parseModel) return resp;
// Do your parsing here
}
更好的是,您可以在集合的fetch
方法中默认包含该选项:
fetch: function(options) {
options = _.extend({parseModel: false}, options);
return Backbone.Collection.prototype.fetch.call(this, options);
}
当然,您还必须为模型的fetch
方法设置默认值:
fetch: function(options) {
options = _.extend({parseModel: true}, options);
return Backbone.Model.prototype.fetch.call(this, options);
}
答案 1 :(得分:0)
尝试使用此解析集合:
parse: function (response) {
return response.data.map(function (data) {
return {
errcode: response.errcode,
data: data
};
});
}