返回路线时,Ember数据中的Ember重设项目

时间:2019-03-07 13:27:42

标签: javascript ember.js

我的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未返回的项目的最佳方法是什么?

1 个答案:

答案 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');
}

型号名称可以为驼峰式或反斜线。