【发布时间】:2014-01-08 14:11:32
【问题描述】:
我有一个名为BaseModel 的简单模型,它从Backbone.Model 扩展而来。根据Backbone.js 文档,我已经覆盖parse 方法以使用预先存在的API。
parse 方法在两种不同的情况下被调用。当我想从集合中获取所有数据时。当我想从模型中获取特定数据时。
在BaseModel 内区分我正在执行以下操作的行为。
parse : function(response, options) {
var result;
if(options.collection) {
// I'm coming from the fetch that belongs to the collection
// manipulate result here...
} else {
// I'm coming from the fetch that belongs to the model
// manipulate result here...
}
return result;
}
这种方法有效还是有更好的方法来实现这一点?
编辑 1
我想到了 Andrew 的回答,但我需要处理的情况很奇怪。事实上,当第一次(来自集合)调用parse 方法时,会解析数据并创建模型的属性。然后,当从模型本身调用 parse 方法时,会解析其他数据并将模型的属性合并到第一个数据中。
编辑 2
例如,在我的情况下,来自集合的响应包含一个对象数组,其中每个对象都有一个属性a。可以应用转换,例如日期对象。然后,来自模型的响应包含b。也可以在这里应用转换。最后,这两个属性将合并到同一个模型中,但它们来自不同的fetch 调用。
请注意,集合中的响应已经是一个数组。所以,我在这里不区分或分裂任何东西。我只知道如果我来自收藏,我会找到a,否则我会找到b。
将集合中的fetch 读取为给我所有模型,而另一个调用为基于从集合返回的模型,通过细节丰富它。
【问题讨论】:
标签: javascript backbone.js collections