【问题标题】:Ember Model not updating on findAllEmber 模型未在 findAll 上更新
【发布时间】:2019-12-27 11:36:36
【问题描述】:

我有一个页面最初加载模型,但在随后链接到同一路径时,它没有正确更新。我正在使用 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 触发之前模型没有足够快地更新数据存储。我已经检查过,数据正在被服务器过滤并在每次调用时正确返回。救命!

【问题讨论】:

  • 很可能根本没有调用model。当重定向到相同的路由时,或者根据链接的完成方式,只有beforeModelafterModel 可能会被调用。
  • 我怎样才能确保模型被调用呢?正在更新,好像来晚了……

标签: ember.js ember-data


【解决方案1】:

感谢@torazaburo 为我指明了正确的方向。

我需要将{ reload: true } 添加到 食品:

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

强制模型重新加载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    相关资源
    最近更新 更多