我有一个模型最初加载的页面,但是在后续链接到同一路径时,它没有正确更新。我使用的是Ember数据存储。
为了举例,我的页面是食物清单。我有水果,蔬菜,肉类等的导航。用户点击它并链接 - 将它们发送到foods.food路线。
模型是
model(params) {
return RSVP.hash({
foodName: params.foodName,
foodItems: this.store.findAll('food-items', {adapterOptions: {foodName: params.foodName}} )
});
}
在我的afterModel(食物,过渡)
food.foodItemsArr = food.foodItems.filter((foodKey) => {
return (foodKey.get('foodName') === food.foodName);
});
然后在我的hbs模板中
{{#each model.foodItemsArr as |key|}}
...
{{/each}}
当用户最初点击食物类型列表中的(水果)时,它会按原样加载水果。然后当他们点击另一种类型(蔬菜)之后,food.foodItemsArr给出的长度为0.然后,如果他们点击第三种食物(肉)然后再回到蔬菜,那么蔬菜会出现。几乎就好像数据存储在afterModel触发之前没有被模型足够快地更新。我已经检查过,每次调用时服务器都会正确过滤和返回数据。救命啊!
答案 0 :(得分:2)
感谢@torazaburo指出我正确的方向。
我需要添加{reload:true} foodItems:this.store.findAll('food-items',{adapterOptions:{foodName:params.foodName},reload:true})
强制模型重新加载。