我不明白为什么afterModel
方法会获得transition
参数,以及它代表什么(是从一个页面到另一个页面的过渡,但在afterModel
方法中没有转换正在运行,并且afterModel
的目的是使用模型数据在需要时启动转换。)
http://emberjs.com/api/classes/Ember.Route.html#method_afterModel
答案 0 :(得分:3)
afterModel
挂钩是三个模型挂钩中的第三个,它们都在转换完成之前运行。
因此afterModel
中的转换与beforeModel
中的转换相同。
不同之处在于,有时您需要模型来决定是否要中止转换并重定向到其他地方。
示例可以是/userEdit/:user_id
路由,其中管理员可以编辑所有用户,普通用户只能编辑自己的用户。在beforeModel
中,您可以检查用户是否为管理员,如果没有,但您无法根据模型信息中止转换。在atferModel
挂钩中,您可以完成此操作,并将转换保存到以后可以重试,例如在用户获得管理员权限之后。
在afterModel
挂钩返回的Promise解析后,路由器不进入路由。