2013-01-13 37 views
13

後,我有一個ArrayController其內容的路由被定義這樣的:列表不更新deleteRecord

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"); 
    } 
}); 

但在「新」的看法,如果我刪除新創建的項目,它的工作原理(不提交)。

在編輯器,如果我刪除了「提交」,更新列表,但是當我做其他操作,列表被重新加載,刪除的項目重新出現(正常)。

那麼,如何刪除一個項目?

注:我用的餘燼和燼數據的「主人」的代碼,剛纔刷新。

+1

我已經遇到了同樣的問題。我想如果你刷新頁面,被刪除的項目不再在這裏了?儘管在提交期間,有沒有任何服務器響應仍包含此記錄? –

+1

是的!這是錯誤。在rails服務器中,我用「render json:user」返回了被銷燬的對象。用「呈現json:無,狀態:ok」,沒關係!非常感謝。 –

+1

好:),這確實是一個相當難以跟蹤的錯誤。如果您創建/刪除子項並在同一時間修改父項(在hasMany/belongs的情況下),那麼同樣的行爲可能會到達服務器,但父子修改會在刪除子項之前運行。因此,對於Ember-data,當父母的迴應來臨時,它一直都是孩子......繁榮...... –

回答

1

只有在記錄被刪除後,您才應該轉換,因爲commit是異步發生的。

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

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

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

另請注意,comitting的交易優於comitting商店。如果您以後決定將記錄添加到自己的交易中,您將需要做的工作較少,如果您不這樣做,它仍將使用與商店合作相同的defaultTransaction

2

我剛剛經歷了一個非常不同的情況下類似的問題。

我使用「​​」(強烈建議,如果你進入的CoffeeScript和灰燼)。它帶有一個Ember Data版本,它有一個奇怪的錯誤,其中正確刪除的記錄會保留在緩存中,因此不會從列表中刪除。

餘did't有時間來弄清楚到底發生了什麼事情;所以我只是嘗試獲取最新版本的Ember Data(2013-05-10 10:20:34 -0700),並立即解決問題。

只要在這裏張貼,以防其他人遇到類似的問題。

而且,我的Jakub阿諾德同意時,他談到不承諾「商店」,並使用事件偵聽器,以確保乾淨的狀態。就在今天,我發現了一個非常有用的博客文章「Patterns and anti-patterns for Ember Data」。