我在我的基本集合和基本模型上使用自定义parse()方法来处理我的服务器返回的所有包装。
我的问题是集合在每个模型上都调用了parse(),这是不需要的,我只需要在从模型而不是集合中获取时解析模型。
我应该以某种方式更改提取还是有其他选择?我发现了一些关于parse = true选项的注释,但没有关于它的真实文档。
// Base class for all models
module.exports = Backbone.Model.extend({
parse: function(response) {
var retrocycled = JSON.retrocycle(JSON.parse(JSON.stringify(response)));
this.statusResp = retrocycled.status;
this.messageResp = retrocycled.message;
return retrocycled.data;
}
});
我的集合在它的解析中大致相同,但它的作用并不重要,我只需要它们只能解析它们是我猜的那些。
谢谢!
答案 0 :(得分:1)
如果查看Backbone源代码line 256 specifically,您会看到parse
被调用,如果存在,则会在创建新模型时显示。
当您将模型添加到集合时,它会从服务器获取响应,并且对于其中的每个项目,它只会生成包含该数据的新模型。
但是,集合本身也有一个parse
方法,可以调用它。
但是你要找的是对Model#parse
的条件调用,具体取决于上下文。这里的问题是,在创建模型时,它不知道您是将其作为独立模型还是作为创建集合的上下文的一部分。
您必须设计模型解析方法以内省response
并确定是否需要额外处理。如果没有,只需返回响应。如果是这样,做你的工作,然后返回“固定”响应。