首页 > 解决方案 > Ember 返回路由时重置 Ember 数据中的项目

问题描述

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

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

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

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

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

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

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

标签: javascriptember.js

解决方案


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

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

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

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

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


推荐阅读