在过滤模型时,deleteRecord不会更新ArrayController

Tay*_*nce 6 ember.js ember-data

Ember.ArrayController在一个应用程序中使用了一个简单的ember-data(最新)ember rc6和一个库存REST控制器.

我已删除阵列控制器呈现的列表中每个项旁边的操作.删除项目时,将进行正确的REST API调用,并将其从数据库中正确删除.服务器响应正确的204响应.

这是我的路由器设置,请注意正在应用的查找过滤器

App.CategoriesIndexRoute = Ember.Route.extend({
    setupController : function(controller, model) {
        this._super(controller, model);

        controller.set("content", App.Category.find({
            "parent": null,
        }));
    }
});
Run Code Online (Sandbox Code Playgroud)

如果我删除查找过滤器并加载所有类别,一切正常(项目在提交后立即自动从列表中删除).但是,当我将过滤器添加到仅显示没有父项的类别时,删除项目时不会更新列表.如果我转换到另一个部分并返回,则重新加载列表并且类别消失.

这是deleteCategory方法ArrayController:

deleteCategory: function(category) {
    var transaction = this.get("store").transaction();

    transaction.add(category);
    category.deleteRecord();
    transaction.commit();
}
Run Code Online (Sandbox Code Playgroud)

这是一个ember-data还是emberjs虫子?如果没有,我在这里做错了什么?如果它是一个错误,有没有办法在删除项目后强制重新加载ArrayController内容?或者,我可以手动从ArrayController中删除类别吗?

更新1:

我设法通过设置其内容强制更新阵列控制器的内容:

category.one("didDelete", this, function() {
    this.set("content", App.Category.find({
        parent: parent_category
    }));
});
Run Code Online (Sandbox Code Playgroud)

更新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}}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Jul*_*ton 0

这不再是 Ember Data 中的处理方式。人们将不再使用事务,如过渡文档中所示: https: //github.com/emberjs/data/blob/master/TRANSITION.md