我在Ember.ArrayController
(最新),ember-data
和一个库存REST控制器的应用程序中使用了一个简单的ember rc6
。
我删除了数组控制器呈现的列表中每个项目旁边的操作。删除项目时,将进行正确的REST API调用,并将其从数据库中正确删除。服务器以正确的204
响应进行响应。
这是我的路由器设置,请注意正在应用的查找过滤器
App.CategoriesIndexRoute = Ember.Route.extend({
setupController : function(controller, model) {
this._super(controller, model);
controller.set("content", App.Category.find({
"parent": null,
}));
}
});
如果删除查找过滤器并加载所有类别,一切正常(项目在提交后立即自动从列表中删除)。但是,当我将过滤器添加到仅显示没有父项的类别时,删除项目时不会更新列表。如果我转换到另一个部分并返回,则重新加载列表并且类别消失。
以下是deleteCategory
中的ArrayController
方法:
deleteCategory: function(category) {
var transaction = this.get("store").transaction();
transaction.add(category);
category.deleteRecord();
transaction.commit();
}
这是ember-data
还是emberjs
错误?如果没有,我在这里做错了什么?如果它是一个错误,有没有办法在删除项目后强制重新加载ArrayController内容?或者,我可以手动从ArrayController中删除类别吗?
更新1:
我设法通过设置其内容强制更新阵列控制器的内容:
category.one("didDelete", this, function() {
this.set("content", App.Category.find({
parent: parent_category
}));
});
更新2:
以下是我在模板中显示项目列表的方法:
{{#each category in controller.content }}
<tr>
<td><a {{ action "detailCategory" category }}>{{ category.name }}</a></td>
<td><a {{ action "deleteCategory" category }}>Delete</a></td>
</tr>
{{/each}}
谢谢!
答案 0 :(得分:0)
这不再是在Ember Data中做事的方式。人们不会再使用交易了,如转换文档中所示:https://github.com/emberjs/data/blob/master/TRANSITION.md