如何从服务器强制重新加载?

时间:2015-10-29 17:55:44

标签: ember.js ember-data

我有一个页面从服务器获取默认的数据列表,此页面还有一个搜索框,在运行时,它会更新查询参数并将新的数据列表返回到同一页面。这很好。

但是,当我清除搜索时(通过操作或在浏览器中点击“返回”),我想从服务器获取新的默认数据,替换搜索结果。

我认为我大部分都有这种方式,因为清除查询参数会导致findAll()再次询问服务器数据,并且还会返回正确的数据,但商店会保留所有数据之前从搜索中检索到的记录,因此用户现在可以看到默认集 加上 他们从搜索中返回的记录。

那么,如何强制Ember Data使用从API返回的内容并覆盖商店中的内容?

这是我的路线代码。尽管有reload: truerefreshModel: true,但似乎两者都没有发生:

model: function(params) {
  if (params.q) {
    return this.store.find('project', params);
  } else {
    return this.store.findAll('project', {reload: true});
  }
},
queryParams: {
  q: {
    refreshModel: true
  }
},

提前致谢!

更新 我注意到生产环境没有这个问题。在Dev中,或者在运行ember serve --environment=development时,数据未被清除,如果我在this.store.unloadAll('project')之前使用findAll(),它似乎清除了它,但随后给了我一个“在被破坏的对象上调用set“错误。但如果我做ember serve --environment=production我没有任何错误。我不知道为什么会出现这种情况,但这不是我第一次在Dev中遇到大麻烦,只是发现正在运行的生产很好。

2 个答案:

答案 0 :(得分:0)

您可以使用store.unloadAll('project')方法在发布findAll之前清除商店中的所有记录。

答案 1 :(得分:0)