Sut i dreiglo newidiadau model backbone.js?

Mae gen i botwm "Canslo" ar fy nhudalen a ddylai ddychwelyd yr holl newidiadau a wneuthum yn ôl i'r wladwriaeth y cafodd ei lwytho o'r gweinydd ..

Mae'n debyg bod angen i mi storio cyflwr cychwynnol o fodel Backbonejs ac adfer cyflwr cyfredol (wedi'i newid) yn ôl i'r cychwynnol.

Beth yw'r ffordd orau o gyflawni hynny?

Diolch

23
задан arkadiy 28 June 2011 в 05:00
поделиться

2 ответа

Вот что я придумал:

var RollbackEnabledModel = Backbone.Model.extend({
  initialize: function() {
    this._initAttributes = _.clone(this.attributes);
  },
  parse: function(data) {
    this._initAttributes = _.clone(data);
    return data;
  },
  rollback: function() {
    this.set(this._initAttributes);
  }
});
2
ответ дан 29 November 2019 в 02:39
поделиться

Взгляните на NYBimes backbone.trackit . Он отслеживает множественные изменения в модели, а не только самые последние изменения, такие как model.changedAttributes() и model.previousAttributes(). Из README:

var model = new Backbone.Model({id:1, artist:'Samuel Beckett', 'work':'Molloy'});
model.startTracking();

model.set('work', 'Malone Dies');
console.log(model.unsavedAttributes());  // >> Object {work: "Malone Dies"}

model.set('period', 'Modernism');
console.log(model.unsavedAttributes());  // >> Object {work: "Malone Dies", period: "Modernism"}

model.save({}, {
    success: function() {
        console.log(model.unsavedAttributes());  // >> false
    }
});

Кроме того, библиотека добавляет функциональность к resetAttributes в исходное состояние с момента последнего сохранения, вызывает событие при обновлении состояния unsavedChanges и имеет опции для подтверждения запроса перед маршрутизацией в новый контекст.

0
ответ дан 29 November 2019 в 02:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: