Ember 在应用程序控制器初始化之前调用的路由模型函数

Ember route model function called before app controller init

我注意到在进行完全重新加载时,我的路由 model 函数将在应用程序控制器 init 方法之前触发。

如果这是设计使然,我如何在调用模型之前执行代码(以设置出站 Ajax 请求)?

你应该使用 ember 的 initializers 如果你想从 server/do 加载一些数据,一些在应用程序控制器的 init 被调用之前设置,代码在您的 ember 应用程序中发生任何其他事情之前,您的初始化程序中的内容将被执行。如果您使用 ember-cli,app/initializers 处会有一个文件夹,您的初始化程序代码应该放在该文件夹中。

与模型关联的挂钩(beforeModelmodelafterModel)在实例化路由的控制器之前被调用。

也许 beforeModel 就是您要找的 http://emberjs.com/api/classes/Ember.Route.html#method_beforeModel

根据文档,beforeModel 适用于

Any async operations need to occur first before the model is attempted to be resolved.

参考:https://github.com/emberjs/ember.js/issues/15495#issuecomment-315464778

通常情况下,Route 模型在控制器之前执行。然而,维护者告诉我们,从来没有保证控制器会以与路由结构相关的任何特定顺序创建

注意:当存在与路由关联的查询参数时,我遇到了在路由模型之前调用控制器初始化的场景 URL(v3.22)