0

ember-js と ember-data の最新バージョンを使用すると、レコードを削除するときに問題が発生しました。

私のルート:

App.ListContactsRoute = Em.Route.extend({
    model: function() {
        App.Contact.find();
    },
    setupController: function(controller, model) {
        controller.set('contacts', model);
    }
});

App.EditContactRoute = Em.Route.extend({
    setupController: function(controller, model) {
        this.transaction = controller.get('store').transaction();
        this.transaction.add(model);
        controller.set('content', model);
        controller.set('organizations', App.Organization.find());
    },
    events: {
        delete: function(contact) {
            contact.deleteRecord();
            this.transaction.commit();
            this.transaction = null;
            this.transitionTo("listContacts");
        },
        save: function(contact) {
            this.transaction.commit();
            this.transaction = null;
            this.transitionTo("editContact", contact);
        }
    }
});

連絡先を削除するときは、ListContactsRou​​teに戻るので、連絡先のリストを返す API が呼び出されます。この時点では、削除された連絡先はサーバー上でまだ削除されていません。

その結果、削除された連絡先はまだ連絡先リスト テンプレートに存在します。エラーは次のとおりです。

"Uncaught Error: Attempted to handle event `loadedData` on <App.Contact:ember469:null> while in state rootState.deleted.inFlight. Called with undefined"

私は何か間違ったことをしていますか、これを修正する方法はありますか?

4

1 に答える 1

1

レコードは の一部ではなくなりthis.transactionます。トランザクションをコミットすると、レコードはストアのデフォルト トランザクションに移動されます。削除アクションを反映するには、ストアをコミットする必要があります。

contact.deleteRecord()
App.store.commit();
于 2013-01-15T17:41:18.993 に答える