Parsing 主干模型解析方法(集合/服务器)
请帮帮我:) 我有主干模型:Parsing 主干模型解析方法(集合/服务器),parsing,backbone.js,collections,Parsing,Backbone.js,Collections,请帮帮我:) 我有主干模型: var people = Backbone.Model.extend({ ... parse : function() { return response } }) 并收集: var group = Backbone.Collection.extend({ model: people ... }) var group = Backbone.Collection.extend({ model: _PeopleBase ... parse : function
var people = Backbone.Model.extend({
...
parse : function() {
return response
}
})
并收集:
var group = Backbone.Collection.extend({
model: people
...
})
var group = Backbone.Collection.extend({
model: _PeopleBase
...
parse : function() { //Collection parser
return response
}
})
通常我通过调用collectionsync方法获取数据,但有时我调用modelfetch方法
我的后端返回答案的格式为:
{code: 0, data: {'1': {name: 'alex'}, '2': {name: 'max'}}}
问题:
如果我为处理我的后端应答编写modelparse方法-收集同步不工作(因为服务器应答有另一种格式),如果我为收集编写parse方法-不工作后端处理
如何创建通用处理
我找到了方法,查看parse方法中的选项并使用else/if,但我不喜欢它 选项一: 使用额外的PeopleBase类会有帮助吗
var _PeopleBase = Backbone.Model.extend({
...
})
var people = _PeopleBase.extend({
...
parse : function() {
return response
}
})
收藏:
var group = Backbone.Collection.extend({
model: people
...
})
var group = Backbone.Collection.extend({
model: _PeopleBase
...
parse : function() { //Collection parser
return response
}
})
选项2:
如果可能的话,您可以依靠返回的数据来决定如何解析它
parse : function(response, options) {
//Test the response with whichever way you can definitely differentiate them
return response
}
选项3:
根据谁是parse函数的调用方:
parse : function(response, options) {
if (this instanceof People) {
} else {
}
return response
}
希望这有帮助 我在我的视图中是这样做的(我有很多嵌套数据,必须将现有对象映射到我的视图,以确保在不完全刷新的情况下更新我的视图): //如果Person也有需要解析的嵌套数据,则传递{parse:true}
parse: function(response, xhr) {
for(var key in this) {
if (key === 'person') {
var embeddedClass,
embeddedData = response[key],
exsiting = this.get(key);
if (existing == null) {
embeddedClass = new Person(embeddedData, {parse: true});
} else {
existing.set(key, existing.parse(embeddedData));
embeddedClass = existing
}
response[key] = embeddedClass;
}
}
return response;
}
然后,当新数据出现时,我需要再次手动解析它,我调用
this.set(this.parse(response));
因此,模型URL发回并接受通常的JSON,但集合的URL发回
{code:0,数据:{'1':{name:'alex'},'2':{name:'max'}}}}
,您需要将后者转换为某种数组?是的,我希望跨集合使用模型,和模型获取方法。重写以重做数据有什么错?我重写了collection#parse,该规则用于解析传入的集合数据,但我在集合属性“model:people”(设置集合模型格式)中进行了设置,当我为每个调用模型#parse的条目获取集合时,你的模型#parse被调用了还是没有被调用?你想要还是需要它被调用?它也是变体,但我不喜欢:)