在子路由更改时重新加载 Ember 父模型



我有一个父路由,其中包含一系列选项卡(它们是子路由)。

父路由有一个模型,该模型命中 JSONAPI 终结点,用于收集与其子路由的数据切向相关的数据。

父路由访问的数据可能会很快更改,因此每当用户在子路由之间遍历时,我想更新它。

有没有办法在每次转换到父路由之一时重新解析父路由上的模型挂钩?

尝试了类似于以下内容的方法,但重新加载似乎不是父模型可用的方法。

父路由

export default Route.extend({
  model() {
    return this.store.findAll('parentData');
  }  
});

儿童路线

export default Route.extend({
  beforeModel() {
    this.modelFor('parentRoute').reload();
  }
});

如果重新加载父模型,子路由模型也会重新加载,从而进入无限的重新加载循环。

认为最好的方法是在子路由上执行 findAll(),并使用该数据而不是父路由模型。

我建议在父路由上使用'willTransition'钩子。每个子路由转换都会触发父路由的 willTransition 挂钩,并且当父路由刚刚初始化时不会触发它。

所以它看起来像这样:

export default Route.extend({
    model() {
        return this.store.findAll('parentData');
    },
    actions: {
        willTransition() {
            this.controller.get('model').reload();
        }
    }
});
转换

到子路由时,您可以使用 yourParentModel.reload() 重新加载父路由模型。

最新更新