我注意到,在执行完全重载时,routes model函数将在应用程序控制器init方法之前触发。如果这是设计上的,我如何在模型被调用之前执行代码(设置我的出站 AJAX 请求)?
model
init
vbkedwbf1#
在路由的控制器被示例化之前,与模型相关联的钩子(beforeModel、model和afterModel)被调用。也许beforeModel就是您正在寻找的内容http://emberjs.com/api/classes/Ember.Route.html#method_beforeModel根据文档,beforeModel适合于任何异步操作都需要在尝试解析模型之前首先发生。
beforeModel
afterModel
kyxcudwk2#
你应该使用ember的initializers来从服务器加载一些数据/在应用程序控制器的init被调用之前做一些设置,你的初始化程序中的代码在你的ember应用程序中发生任何事情之前被执行。如果你使用ember-cli,在app/initializers中将有一个文件夹,你的初始化程序代码应该放在那里。
initializers
vecaoik13#
请参阅:https://github.com/emberjs/ember.js/issues/15495#issuecomment-315464778通常,路由模型在控制器之前执行。然而,维护者告诉***从来没有保证过控制器会按照与路由结构相关的任何特定顺序创建***。注意:当存在与路由URL(v3.22)关联的查询参数时,我遇到了在路由模型之前调用控制器init的场景
3条答案
按热度按时间vbkedwbf1#
在路由的控制器被示例化之前,与模型相关联的钩子(
beforeModel
、model
和afterModel
)被调用。也许
beforeModel
就是您正在寻找的内容http://emberjs.com/api/classes/Ember.Route.html#method_beforeModel根据文档,
beforeModel
适合于任何异步操作都需要在尝试解析模型之前首先发生。
kyxcudwk2#
你应该使用ember的
initializers
来从服务器加载一些数据/在应用程序控制器的init
被调用之前做一些设置,你的初始化程序中的代码在你的ember应用程序中发生任何事情之前被执行。如果你使用ember-cli,在app/initializers中将有一个文件夹,你的初始化程序代码应该放在那里。vecaoik13#
请参阅:https://github.com/emberjs/ember.js/issues/15495#issuecomment-315464778
通常,路由模型在控制器之前执行。然而,维护者告诉***从来没有保证过控制器会按照与路由结构相关的任何特定顺序创建***。
注意:当存在与路由URL(v3.22)关联的查询参数时,我遇到了在路由模型之前调用控制器init的场景