儿童路线变化的重新加载Ember父模型

时间:2016-06-07 17:12:47

标签: ember.js

我有一个包含一系列标签(父路线)的父路线。

父路由有一个模型,该模型命中JSONAPI端点以收集与其子项数据相切的数据。

父路由访问的数据可以很快地改变,所以每当用户遍历子路由时我都想更新它。

有没有办法在每次转换到其中一个子路径时,在父路由上重新解析模型挂钩?

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

父路线

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

儿童路线

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

3 个答案:

答案 0 :(得分:1)

如果重新加载父模型,子路径模型也会重新加载,导致无限循环重新加载。

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

答案 1 :(得分:1)

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

所以看起来像这样:

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

答案 2 :(得分:0)

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