簡體   English   中英

deleteRecord后列表未更新

[英]List not updated after deleteRecord

我有一個ArrayController,其內容在這樣的路由中定義:

App.UsersRoute = Ember.Route.extend({
  model: function() {
    return App.User.find();
  },

  setupController: function(controller, model) {
    this._super(controller, model);
    this.controllerFor('application').set('currentRoute', 'users');
  }
});

我在模板中列出數據:

<ul>
  {{#each user in arrangedContent}}
  <li>
    {{user.lastName}} {{user.firstName}}
    {{#linkTo "users.edit" user class="btn btn-primary btn-small"}}EDIT{{/linkTo}}
  </li>
  {{/each}}
</ul>

它工作正常。

如果我創建一個新項目,它會自動添加到模板中的列表中:

App.UsersNewRoute = Ember.Route.extend({
  model: function() {
    return App.User.createRecord({firstName: '', lastName: ''});
  }
});

但是當我在“編輯”視圖中刪除某個項目時,它不起作用:

App.UsersEditController = Ember.ObjectController.extend({
  ...

  destroy: function() {
    this.get('content').deleteRecord();
    this.get('store').commit();
    this.transitionToRoute("users.index");
  }
});

但是在“新”視圖中,如果我刪除了新創建的項目,它就可以工作(沒有提交)。

在編輯控制器中,如果我刪除“提交”,則列表會更新,但當我執行其他操作時,將重新加載列表,並重新顯示已刪除的項目(正常)。

那么,如何刪除項目?

注意:我使用ember和ember-data的“master”代碼,剛剛刷新。

我剛剛在一組非常不同的情況下遇到了類似的問題。

我正在使用“ grunt-ember-boilerplate ”(強烈建議你使用CoffeeScript和Ember)。 它附帶了一個版本的Ember Data,它有一個奇怪的錯誤,正確刪除的記錄將保留在緩存中,因此不會從列表中刪除。

我沒有時間弄清楚到底發生了什么; 所以我只是嘗試了最新版本的Ember Data(2013-05-10 10:20:34 -0700)並立即解決了這個問題。

只是發布在這里,萬一其他人遇到類似的問題。

此外,我同意Jakub Arnold談到不提交“商店”並使用事件監聽器來確保清潔狀態。 就在今天,我找到了一個關於這個主題的非常有用的博客文章,“ Ember Data的模式和反模式 ”。

您還應該僅在刪除記錄后進行轉換,因為提交是異步發生的。

var user = this.get("content");

user.one("didDelete", this, function() {
  this.transitionTo("users.index");
});

user.deleteRecord();
user.get("transaction").commit();

另請注意,與商店相比,優先考慮交易。 如果你以后決定將記錄添加到它自己的事務中,那么你將沒有多少工作要做,如果你不這樣做,它仍然會使用與商店相同的defaultTransaction

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM