繁体   English   中英

Ember Data deleteRecord()后跟rollback() - 如何让对象重新出现在列表中?

[英]Ember Data deleteRecord() followed by rollback() - how to make object reappear in list?

在控制器中:

    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
                }
            );
        },
    }

在模板中:

{{#each note in model.notes}}
<li>
    <span>{{note.text}}</span>
    <span {{action 'selectDelete' note}}>[Delete]</span>
</li>
{{else}}
No Notes
{{/each}}

现在,当我单击[Delete] span时,将触发selectDelete操作,并输出以下内容:

Delete error before true true
Delete error after false false

...这意味着回滚成功,并且记录确实未被删除。

但是,当调用deleteRecord()更新DOM以删除表示已删除记录的部分时,调用rollback()会将更改还原到内存中的记录,但无法还原DOM中的更改。

如何确保rollback()触发此更改?

或者,有没有办法改变默认行为,以便deleteRecord()不会触发DOM中的更改,而是保持不变,推迟更改,直到调用success回调? (这样就不需要对DOM进行恢复更改)

这可能是因为记录已从路线的模型(也称为可见列表)中删除,但不是从商店(可见和不可见模型的缓存 中删除

尝试再次手动将其推送到route.model

route.get('model').pushObject(note);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM