【问题标题】:Ember reset items in Ember data when returning to routeEmber 在返回路由时重置 Ember 数据中的项目
【发布时间】:2019-07-29 09:48:24
【问题描述】:

我的 Ember 应用程序中有一条路由,它在模型挂钩中返回一组记录,如下所示:

model() {
  return this.store.findAll('pending-post');
}

假设这返回 10 条记录,我可以在 Ember Inspector 的数据选项卡中看到这 10 条记录,并且当我登录 {{model}} 时。网络选项卡还显示数据对象中返回了一个包含 10 条记录的数组。

然后我转到我的应用程序中的另一条路线并编辑帖子,使其不再处于待处理状态。此更改将持续到后端。

当我返回仪表板时,模型挂钩再次运行。网络选项卡中的请求现在返回一个包含 9 个对象的数组,因为 API 只返回 9 个项目。

但是,Ember 检查器中的数据选项卡仍然显示 10 项,{{model}} 中仍然有 10 项。

强制 Ember 数据第二次删除 API 未返回的项目的最佳方法是什么?

【问题讨论】:

  • 您确定pending-post 是一个实体,而不仅仅是post 的一个子集吗? this.store.query('post', { filter: { pending: true } }) 或类似的东西会更容易处理您的用例。
  • 在这种情况下,pending-post 是它自己的实体,因此查询参数无济于事,但我明白你对那个用例的看法。

标签: javascript ember.js


【解决方案1】:

将记录保存到后端会返回Promise。因此,store.unloadRecord() 可以在 then 处理程序中用于从存储中删除记录。

record.save().then(function(){
    this.store.unloadRecord(record);
});

或者在查询模型之前,从存储中删除所有记录。

model()
{
    this.store.unloadAll('pending-post');
    return this.store.findAll('pending-post');
}

模型名称可以是驼峰或虚线。

【讨论】:

    猜你喜欢
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    相关资源
    最近更新 更多