javascript - Ember 返回路由时重置 Ember 数据中的项目
问题描述
我的 Ember 应用程序中有一条路由,它在模型挂钩中返回一组记录,如下所示:
model() {
return this.store.findAll('pending-post');
}
假设这返回 10 条记录,我可以在 Ember Inspector 的数据选项卡中看到这 10 条记录,并且当我登录{{model}}
. 网络选项卡还显示在数据对象中返回了一个包含 10 条记录的数组。
然后我转到我的应用程序中的另一条路线并编辑帖子,使其不再处于待处理状态。此更改将持续到后端。
当我返回仪表板时,模型挂钩再次运行。网络选项卡中的请求现在返回一个包含 9 个对象的数组,因为 API 只返回 9 个项目。
但是,Ember 检查器中的数据选项卡仍然显示 10 项,并且{{model}}
.
强制 Ember 数据第二次删除 API 未返回的项目的最佳方法是什么?
解决方案
将记录保存到后端会返回一个Promise
. 因此store.unloadRecord()
可以在then
处理程序中使用以从存储中删除记录。
record.save().then(function(){
this.store.unloadRecord(record);
});
或者在查询模型之前,从存储中删除所有记录。
model()
{
this.store.unloadAll('pending-post');
return this.store.findAll('pending-post');
}
型号名称可以是驼峰式或虚线式。
推荐阅读
- angular - 如何从我的 Web API 访问 Google Drive API
- java - 无法使用 Selenium 在 LinkedIn 中定位元素
- php - 未定义的属性:codeigniter 中的 Controller::$Mail_library
- inno-setup - 在初始化之前扩展常量的 innosetup 错误
- amazon-web-services - SQS 守护进程在等待现有连接返回响应时是否会超出设置的限制与应用建立新连接?
- r - 在 R 中将 as.factors 分组在一起
- reactjs - 被 CORS 老板打败(GraphQLServer、Graphql-yoga、React)
- google-api - 链接的应用程序页面在哪里
- html - 如何在 Bootstrap 3.4 的同一行上创建输入和按钮?
- java - GPS地图不会播种它