【发布时间】: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。当重定向到相同的路由时,或者根据链接的完成方式,只有beforeModel和afterModel可能会被调用。 -
我怎样才能确保模型被调用呢?正在更新,好像来晚了……
标签: ember.js ember-data