Сохранить измененные атрибуты после события изменения

Есть ли способ предотвратить очистку магистрали объекта changeAttributes после изменения свойства (версия магистрали> 1). Я просто пытаюсь увеличить атрибут версии модели, когда модель изменилась после добавления некоторых данных, и затем синхронизировать модель со всеми ее измененными атрибутами на сервере;

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

Однако, поскольку магистраль очищала предыдущие изменения после второго набора и в моей функции синхронизации магистрали, я только отправляю измененный. Магистраль атрибутов будет отправлять только атрибут версии. Так есть ли способ изменить и атрибут и добавить его в объект измененного атрибута, не очищая его. В противном случае я был бы вынужден сделать дополнительный серверный вызов для добавления версии

1 ответ

Вы могли бы использовать model.changed ( http://backbonejs.org/)

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
    };
}

Надеюсь, это поможет.

Другие вопросы по тегам