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 回答