idb*_*ley 14 javascript collections json backbone.js
我有一个使用backbone.js的情况,其中我有一组模型,以及一些关于模型的其他信息.例如,假设我正在返回金额列表:它们具有与每个模型相关联的数量.现在假设每个金额的单位总是相同的:比如夸脱.然后我从我的服务回来的json对象可能是这样的:
{
dataPoints: [
{quantity: 5 },
{quantity: 10 },
...
],
unit : quarts
}
Run Code Online (Sandbox Code Playgroud)
现在骨干集合没有真正的机制来将这个元数据与集合本地关联,但是在这个问题中我建议:在集合上设置属性 -我可以使用.meta(property, [value])样式函数扩展集合的主干js - 这是一个好的解决方案 但是,我们自然希望能够从json响应中干净地检索这些数据,就像我们上面的那样.
Backbone.js为我们提供了parse(response)函数,它允许我们指定从url属性中提取集合的模型列表的位置.但是,我没有办法在不重载的情况下创建更智能的功能,fetch()这将删除已经可用的部分功能.
我的问题是:有没有比重载更好的选择fetch()(并尝试调用它的超类实现)来实现我想要实现的目标?
谢谢
Sto*_*ive 22
就个人而言,我会将Collection内部包裹起来Model,然后覆盖parse,如下所示:
var DataPointsCollection = Backbone.Collection.extend({ /* etc etc */ });
var CollectionContainer = Backbone.Model.extend({
defaults: {
dataPoints: new DataPointsCollection(),
unit: "quarts"
},
parse: function(obj) {
// update the inner collection
this.get("dataPoints").refresh(obj.dataPoints);
// this mightn't be necessary
delete obj.dataPoints;
return obj;
}
});
Run Code Online (Sandbox Code Playgroud)
该Collection.refresh()调用使用新值更新模型.meta如先前建议的那样将自定义值传递到Collection可能会阻止您绑定到这些元值.
| 归档时间: |
|
| 查看次数: |
4687 次 |
| 最近记录: |