Javascript 如何重新加载子路由';父路由中的模型?

Javascript 如何重新加载子路由';父路由中的模型?,javascript,ember.js,Javascript,Ember.js,我有一个嵌套的路由(见下文) foo路由模型返回一个集合(数组) 在父路由home中,我定义了一个名为reloadModel的函数 我尝试从控制器重新加载模型,但失败(产生未定义的函数错误,controller.get(…)。刷新不是函数或controller.get(…)。重新加载不是函数) 我想从父管线重新加载子管线的模型;然而,我现在知道我可以得到孩子的路线吗 我的问题 如何从routehome中刷新routefoo或bar中的模型 任何提示都值得欣赏。从父路由刷新子路由的模型通常不是一个

我有一个嵌套的路由(见下文)

foo
路由模型返回一个集合(数组)

在父路由
home
中,我定义了一个名为
reloadModel
的函数

我尝试从控制器重新加载模型,但失败(产生未定义的函数错误,
controller.get(…)。刷新不是函数
controller.get(…)。重新加载不是函数

我想从父管线重新加载子管线的模型;然而,我现在知道我可以得到孩子的路线吗

我的问题

如何从route
home
中刷新route
foo
bar
中的
模型


任何提示都值得欣赏。

从父路由刷新子路由的模型通常不是一个好主意,因为它可能没有在第一时间加载。相反,从子级刷新父级模型是可以的,因为按照设计,加载子管线需要首先加载将加载父级模型的父级管线

基于您对此类功能的需求,您似乎将自己置于了一个艰难的境地,您可能应该思考为什么我的设计要求我这样做,而不是我如何才能这样做

然而,您可以使用的方法是,在父级
主路由中调用与在子级模型路由中调用相同的功能

例如,如果路线
a
有:

model() {
  return this.store.findRecord('a');
}
您可以在
主页中执行类似的操作:

reloadModel() {
  this.store.findRecord('a', { reload: true }); // skip the cache and make the request
}

您的错误
get
controllerFor
reload
中未定义哪个函数?我已更新了问题。这是因为我从控制器检索到的
模型
只是一个普通对象吗?这肯定会导致问题,因为只有余烬数据模型具有
重新加载
方法。谢谢,你的回答对我来说很有意义。“我想我需要改一下我的设计。”李信阳很高兴能帮助mate。Ember最主要的一点是,它故意对其设计非常严格,并试图通过使所有其他方法更加困难来推动我们采用正确的方法。因此,很多时候,任何困难都可能是我们的方法的缺陷,而不是来自余烬的能力不足。当然这不是100%正确,但这是一般行为。fetchRecord不是余烬中的东西-data@xoma但我想他们正在把它变成一种私人方法。我来编辑accordingly@nem035我只是去了github并尝试搜索它-它不在master上
model() {
  return this.store.findRecord('a');
}
reloadModel() {
  this.store.findRecord('a', { reload: true }); // skip the cache and make the request
}