对于应用程序,我需要获取默认值,然后我合并用户特定的值。这些模型与key
属性匹配。
默认设置没有id
用户细节确实有id
。
如果我将idAttribute
设置为key
,它会将用户特定值巧妙地合并到默认模型中。但是当我想save
这个模型时,由于key
,它会创建带有idAttribute
属性的PUT网址。我想保存到collection.url + id,就像基本的Backbone功能一样。
为什么不覆盖网址?如果用户编辑为默认模型,则需要POST到我的REST服务器,通常没有id
的骨干模型会自动执行此操作。通过覆盖URL,这不再适用。
idAttribute
之前更改.save()
似乎不会影响它。
代码示例:
DefaultWeatherLimits = BackboneCollection.extend({
url: 'limits/default',
comparator: 'displayOrder',
model: WeatherLimit,
initialize: function () {
this.fetch();
}
});
Respond是这样的数组(实际情况中有更多信息):
"[{"key":"MinHurricaneDistance","visualizationHint":"Value","value":300},{"key":"MaxHeadWavesHeight","visualizationHint":"Value","value":300}]"
该模型如下所示:
WeatherLimit = Backbone.Model.extend({
idAttribute : 'key'
});
现在,作为测试添加用户特定模型:
var fake = this.add({id: 99, key: "MinHurricaneDistance", checked: true}, {merge: true});
我希望此fake
模式保存到' limit / default / 99',但它会保存到' limit / default / MinHurricaneDistance'
我希望MaxHeadWavesHeight
模型发布到' / limit / default',它会获得一个id作为回报,之后我可以将其保存到该ID。