ember.js 未在findAll上更新Ember模型

w8f9ii69  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(176)

我有一个页面,模型最初是加载的,但在随后的链接到相同的路线,它没有正确更新。我使用的是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}}

当用户最初单击(水果)在食物类型列表上,它会加载水果。当他们点击不同的类型时(vegetable)之后,food.foodItemsArr会将长度设为0。然后,如果单击第三个食物(肉类)然后再回到蔬菜,蔬菜就出现了。这几乎就像是在afterModel触发之前,数据存储没有被模型更新得足够快。我已经检查过了,数据正在被过滤,并在每次调用时由服务器正确返回。

wwtsj6pe

wwtsj6pe1#

感谢@torazaburo为我指明了正确的方向。
我需要将{ reload: true }添加到foodItems中:

this.store.findAll('food-items',  {adapterOptions: {foodName: params.foodName}, reload: true} )

以强制重新加载模型。

相关问题