![](/img/trans.png)
[英]Error Attempted to handle event `loadedData` : Object not updated after 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.