2015-03-23 4 views
0

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

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

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

ответ

0

Вы можете использовать model.changed (http://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 
    }; 
} 

Я надеюсь, что это помогает.