gpt4 book ai didi

ember.js - 过滤模型时,deleteRecord 不会更新 ArrayController

转载 作者:行者123 更新时间:2023-12-04 16:10:57 25 4
gpt4 key购买 nike

我正在使用一个简单的 Ember.ArrayController在具有 ember-data 的应用程序中(最新), ember rc6和一个库存 REST Controller 。

我在数组 Controller 呈现的列表中的每个项目旁边都有删除操作。删除项目时,会进行适当的 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-dataemberjs漏洞?如果没有,我在这里做错了什么?如果这是一个错误,有没有办法在我删除一个项目后强制重新加载 ArrayController 的内容?或者,我可以手动从 ArrayController 中删除类别吗?

更新1:

我设法通过设置其内容来强制更新阵列 Controller 的内容:
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}}

谢谢!

最佳答案

这不再是在 Ember Data 中做事的方式。人们不会再使用事务,正如在转换文档中所见:https://github.com/emberjs/data/blob/master/TRANSITION.md

关于ember.js - 过滤模型时,deleteRecord 不会更新 ArrayController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17424188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com