【发布时间】:2013-01-13 12:24:30
【问题描述】:
我有一个 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 的“主”代码,刚刚刷新。
【问题讨论】:
-
我已经遇到过同样的问题。我想如果你刷新页面,被删除的项目就不在这里了?但是,在提交期间,是否有任何服务器响应仍包含此记录?
-
是的!这是错误。在 Rails 服务器中,我用“render json: user”返回了被破坏的对象。使用“render json: nil, status: :ok”,没关系!非常感谢。
-
很好:),这确实是一个很难跟踪的错误。如果您同时创建/删除一个子项并修改父项,则可能会出现相同的行为。(在 hasMany/belongs 的情况下)2 个请求转到服务器,但父项修改在子项删除之前运行。结果,对于 Ember-data,当父响应到来时,它总是有子...繁荣...
-
您能否更新此问题,使其不再显示为“未回答”?
标签: ember.js ember-data