Сохранить измененные атрибуты после события изменения
Есть ли способ предотвратить очистку магистрали объекта 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
};
}
Надеюсь, это поможет.