簡體   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