Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 在子管线更改时重新加载余烬父模型_Ember.js - Fatal编程技术网

Ember.js 在子管线更改时重新加载余烬父模型

Ember.js 在子管线更改时重新加载余烬父模型,ember.js,Ember.js,我有一个包含一系列选项卡(即子路由)的父路由 父路由有一个模型,该模型命中JSONAPI端点以收集与其子路由的数据相关的数据 父路由访问的数据可以相当快地更改,因此每当用户在子路由之间遍历时,我都会更新它 是否有一种方法可以在每次将父路由上的模型挂钩的一个子路由转换到该模型挂钩时,从本质上重新解析该模型挂钩 已经尝试了类似于下面的方法,但重载似乎不是父模型可用的方法 父路由 export default Route.extend({ model() { return this.sto

我有一个包含一系列选项卡(即子路由)的父路由

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

父路由访问的数据可以相当快地更改,因此每当用户在子路由之间遍历时,我都会更新它

是否有一种方法可以在每次将父路由上的模型挂钩的一个子路由转换到该模型挂钩时,从本质上重新解析该模型挂钩

已经尝试了类似于下面的方法,但重载似乎不是父模型可用的方法

父路由

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

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

当您转换到子管线时,可以使用yourParentModel.reload()重新加载父管线模型。

如果重新加载父管线模型,子管线模型也将重新加载,从而导致无限次的重新加载循环


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

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

所以它看起来是这样的:

export default Route.extend({
模型(){
返回此.store.findAll('parentData');
},
行动:{
willTransition(){
this.controller.get('model').reload();
}
}
});

这在一个承诺已定的模型上似乎不起作用。是的,这正是我所想的,糟糕的是它不起作用。你确定你得到了正确的parentRoute吗?你是否用调试器检查过它在beforeModel中是否可以访问?是的,我有权访问它,但该对象在其生命周期的这一点上似乎没有重载方法。如果它这样做了,我想它也会很不幸地重新加载子路由。是的,但是每次我都必须将数据反馈回父模板。在每次转换时,通过操作传递数据似乎很麻烦。好吧,你不需要传递任何东西。findAll方法会对存储更改做出反应,因此当您在子路由中执行findAll(“parentData”)时,父路由的parentData也会更新。