2013-01-14 74 views
0

使用最新版本的ember-js和ember-data時,刪除記錄時出現問題。錯誤嘗試處理事件`loadedData`:對象在deleteRecord後未更新

我的路線:

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" 

上午我做錯了什麼或者是有辦法解決這一問題?

回答

1

該記錄不再是this.transaction的一部分,一旦您提交了一個事務,記錄將被移至商店默認事務。要反映您的刪除操作,您需要提交商店。

contact.deleteRecord() 
App.store.commit(); 
相關問題