![](/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.