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

标签 javascript ember.js ember-data handlebars.js

在 Controller 中:

    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] 范围时,将触发 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);

关于javascript - Ember Data deleteRecord() 后跟 rollback() - 如何使对象重新出现在列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24052488/

相关文章:

ember.js - 如何 : File Upload with ember. js

ember.js - 如何使用 Ember 数据访问 json 中的嵌套对象

ember.js - Ember 数据 : create Model without store

javascript - 为什么vuejs不渲染checked属性为true的复选框

javascript - Jquery Ui 可排序项目选项仅选择第一项

javascript - Base64 裁剪图像

javascript - 在 ember 序列化器上定义自定义根 json 节点

javascript - 我可以向 CLI 添加自己的命令吗?

ember.js - 不同的 Ember 路线或在各自的上下文中显示两个复杂的 View

javascript - 当对象初始化时,如何获取 ember 对象的唯一 id?