使用PATCH保存模型仅更新上次更改的属性

时间:2015-01-12 17:34:51

标签: backbone.js model

我有一个问题在以后持续不同的模型更改。

当我的视图捕获字段的更新时,它会触发关联模型的更新 这是一些粗略的伪代码:

[ snip view boilerplate ]  
"events": {
    "change input": function( event ){
        EventManager.trigger( "field:update", {
            "model": this.model,
            "field": event.target
        });
    },
    "click button": function(){
        EventManager.trigger( "save", { "model": this.model };
    }
}

在活动经理中:

[ snip event manager stuff ]
vent.on( "field:update", function( eventData ){
    var setter = InterfaceClass.getSetterName( eventData.field );

    eventData.model[ setter ]( eventData.field.value );
});

vent.on( "save", function( eventData ){
    eventData.model.save(
        eventData.model.changedAttributes(),
        { "patch": true }
    );
});

不幸的是,changedAttributes only returns the changed attributes since the last .set。这适用于以下工作流程: update - > 保存 - > 重复,但根本不是更新 - > 重复 - > 保存

使用...

eventData.model.save( null, { "patch": true } );

...的行为方式基本相同,仅修补模型的 last 修改后的属性,而不是自上次.save以来的所有更改。

现在,完全有可能通过简单地使用整个模型而不是PATCH执行PUT来解决这个问题,但我希望尽可能简化网络请求:

PATCH {"field": "value", "more": "changes"}

在我看来是非常优选的

PUT {"field": "value", "more": "changes", "other": "same", "thing": "same"}

自上次保存以来,我的模型有哪些<{1}} 所有更改了属性?

0 个答案:

没有答案