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
Вот что я придумал:
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);
}
});
Взгляните на 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
и имеет опции для подтверждения запроса перед маршрутизацией в новый контекст.