更改事件后保留更改的属性

时间:2015-03-23 13:03:25

标签: backbone.js backbone-model

有没有办法防止骨干在更改属性(骨干版本> 1)后清除changedAttributes对象。 我只是在添加一些数据后模型更改后再尝试增加模型的版本属性,然后将模型及其所有已更改的属性同步到服务器;

var version = model.get('version');
model.set(data);
if(model.changedAttributes()) {
   model.set('version', version+1);
   model.save();
}

然而,由于骨干网在第二组之后清除了之前的更改,并且在我的骨干同步功能中,我只发布changedAttributes骨干网,只会发布版本属性。那么是否有一种方法可以更改和属性并将其添加到已更改的属性对象而不清除它。否则我将被迫进行额外的服务器调用以添加版本

1 个答案:

答案 0 :(得分:0)

您可以使用model.changedhttp://backbonejs.org/#Model-changed

var version = model.get('version');
model.set(data);
if (model.changedAttributes()) {

    // Remember the changes
    var changes = model.changed;

    // Set new version
    var newVersion = version + 1;
    model.set('version', newVersion);

    // Extend the changes with the new version
    model.changed = _.extend(changes, {
        version: newVersion
    });

    // Save to server
    model.save();

    // Reset changes to only contain the new version, so we don't break anything else
    model.changed = {
        version: newVersion
    };
}

我希望这会有所帮助。