我的页面上有一个"取消"按钮,它应该将我所做的所有更改恢复为从服务器加载的状态.
我想我需要存储Backbonejs模型的初始状态并将当前(已更改)状态恢复为初始状态.
实现这一目标的最佳方法是什么?
谢谢
Der*_*ley 11
FWIW - 我写了一个插件来自动处理这个问题,特别是考虑到"取消"按钮的想法:http://github.com/derickbailey/backbone.memento
我不相信有一个方法调用将模型返回到未编辑状态..但是未编辑的值可以通过model.previous(属性)单独获得,也可以通过model.previousAttributes单独获得.
model.previousAttributes()返回所有先前的属性,同时model.changedAttributes()返回所有已更改的属性,但返回其新值(或者false如果没有更改).所以你可以将它们结合起来cancelChanges在你的原型中编写一个方法:
var MyModel = Backbone.Model.extend({
cancelChanges: function() {
var changed = this.changedAttributes();
if(!changed)
return;
var keys = _.keys(changed);
var prev = _.pick(this.previousAttributes(), keys);
this.set(prev, {silent: true}); // "silent" is optional; prevents change event
},
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10776 次 |
| 最近记录: |