Backbone在某些属性上合并,保存在id上

时间:2014-12-12 14:32:04

标签: javascript backbone.js

对于应用程序,我需要获取默认值,然后我合并用户特定的值。这些模型与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。

0 个答案:

没有答案