bgu*_*uiz 6 javascript handlebars.js ember.js ember-data
在控制器中:
actions: {
selectDelete: function(note) {
console.log('selectDelete', note);
note.deleteRecord();
note.save().then(
function success() {
console.log('Deleted successfully');
}, function failure() {
console.log('Delete error before',
this.get('isDeleted'), this.get('isDirty'); //true, true
// note.transitionTo('loaded.saved'); //also has same effect
note.rollback();
console.log('Delete error after',
this.get('isDeleted'), this.get('isDirty'); //false, false
}
);
},
}
Run Code Online (Sandbox Code Playgroud)
在模板中:
{{#each note in model.notes}}
<li>
<span>{{note.text}}</span>
<span {{action 'selectDelete' note}}>[Delete]</span>
</li>
{{else}}
No Notes
{{/each}}
Run Code Online (Sandbox Code Playgroud)
现在,当我单击[Delete]跨度时,selectDelete将触发操作,并显示以下输出:
Delete error before true true
Delete error after false false
Run Code Online (Sandbox Code Playgroud)
...这意味着回滚成功,并且记录确实未被删除.
但是,在调用deleteRecord()更新DOM以删除表示已删除记录的部分时,调用rollback()似乎将更改还原到内存中的记录,但无法还原DOM中的更改.
如何确保rollback()触发此更改?
或者,有没有办法改变默认行为,这样deleteRecord()就不会触发DOM中的更改,而是保持不变,推迟更改,直到success调用回调为止?(这样就不需要对DOM进行恢复更改)
这可能是因为该记录已从路线的模型(也称为可见列表)中删除,但没有从存储中删除(可见和不可见模型的缓存。)
尝试再次将其推至route.model手动。
route.get('model').pushObject(note);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
992 次 |
| 最近记录: |