在保存之前,我一直试图将模型的更改列表存储到另一个模型中,以便我可以回想一下这些更改以撤消之前的更改。这是我正在使用的代码:
var changes = item.changedAttributes();
var newUndo = this.store.createRecord('undo', {
item_id: item.get('id'),
changes: changes
});
我的复选框是典型的:
{{input type="checkbox" checked=checked class="checkbox"}}
我有一个复选框的组件,当检查更改时发送保存操作,并且控制器的保存方法在保存记录之前调用上面的代码:
import Ember from 'ember';
export default Ember.Component.extend({
checked: false,
model: null,
watchChecked: function () {
this.sendAction('save', this.get('model'))
}.observes('checked')
});
撤消模式
import DS from "ember-data";
export default DS.Model.extend({
item_id: DS.attr('number'),
changes: DS.attr('string')
});
这适用于字符串属性,但是对于布尔复选框,它没有按预期运行。这就是我所看到的:
页面加载,未选中项目已选中:
changes: {}
然后取消选中:
changes: {print_copy_sent: true,true}
然后再次检查:
changes: {print_copy_sent: false,false}