Ember.js 什么时候为ember应用程序激活路线级别的钩子运行

Ember.js 什么时候为ember应用程序激活路线级别的钩子运行,ember.js,operator-precedence,Ember.js,Operator Precedence,从api文档中可以看出,“这个钩子是在路由器进入路由时执行的。当路由的模型改变时,它不会执行。”但由于一些混淆,我不能真正理解它 例如,这里有路由名称“xxx.yyy” 在xxx路径中,我设置了钩子函数:“beforeModel”、“model”、“afterModel”、“activate”、“setupController”。每个钩子函数中都有调试器; 路线yyy也是如此 然后,当我启动调试时,我发现调用顺序是: 'xxx:beforeModel'->'xxx:model'->'

从api文档中可以看出,“这个钩子是在路由器进入路由时执行的。当路由的模型改变时,它不会执行。”但由于一些混淆,我不能真正理解它

例如,这里有路由名称“xxx.yyy” 在xxx路径中,我设置了钩子函数:“beforeModel”、“model”、“afterModel”、“activate”、“setupController”。每个钩子函数中都有调试器; 路线yyy也是如此

然后,当我启动调试时,我发现调用顺序是:

'xxx:beforeModel'->'xxx:model'->'xxx:afterModel'->'yyy:beforeModel'->'yyy:model'->'yyy:afterModel'->'xxx:activate'->'xxx:setupController'->'yyy:activate'->'yyy:setupController'.
为什么在xxx:activate之前调用yyy:beforeModel

据我所知,如果xxx:afterModel返回一个承诺,它将等待它完全填充(或切换到装载路线),在承诺完成后,对我来说,这意味着我们几乎进入了路线xxx,因此接下来应该调用xxx:activate。但是,下一个是yyy:beforeModel


谁能告诉我原因???

当转换到路线时,所有模型在激活/设置控制器之前都已解决。

是的,我知道。但我认为,当所有的模型都解决了,它应该调用激活当前路线下一步。但事实是,下一个路由的beforeModel被称为next,当前路由的activate hook被延迟并将被称为laternop,在激活或设置任何控制器之前,必须解决所有的模型hook。这个例子就是你指的,对吗?