我的Ember应用程序中有一条路由,该路由会在模型挂钩中返回一组记录,如下所示:
model() {
return this.store.findAll('pending-post');
}
假设这将返回10条记录,那么我可以在Ember Inspector的“数据”选项卡中以及登录{{model}}
时看到10条记录。网络标签还显示了在数据对象中返回的包含10条记录的数组。
然后我转到应用中的另一条路线并编辑帖子,以使其不再待处理。此更改将保留到后端。
当我返回仪表板时,模型挂钩再次运行。现在,“网络”标签中的请求将返回一个9个对象的数组,因为API仅返回9个项目。
但是,Ember inpect inspec中的数据标签仍然显示10个项目,{{model}}
中仍然有10个项目。
强制Ember数据删除第二次API未返回的项目的最佳方法是什么?
答案 0 :(得分: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');
}
型号名称可以为驼峰式或反斜线。