【发布时间】:2015-09-01 12:20:40
【问题描述】:
在回答 other question 时,我做了不正确的陈述,即每次转换后都会运行 ApplicationRoute.beforeModel() 钩子。当意识到这一事实时,我确认该挂钩仅使用准系统 Ember 应用程序运行一次。
不幸的是,我在文档中找不到可以解释这种行为的任何内容。 First paragraph of beforeModel documentation 状态:
这个钩子是第一个在尝试转换到一个路由或其子路由时调用的路由条目验证钩子。
至于ApplicationRoute - 关于它的内容不多,在指南的action bubbling 部分中,我们可以找到从控制器通过路由到其父级的动作冒泡的信息,并将ApplicationRoute 列为顶级父级路线:
如果模板的控制器和当前活动的路由都没有实现处理程序,则该操作将继续冒泡到任何父路由。最终,如果定义了 ApplicationRoute,它将有机会处理该操作。
从逻辑上讲,这应该意味着,每个转换都应该运行 ApplicationRoute 挂钩,这与实际发生的情况相反。
所以问题是:
为什么ApplicationRoute 不响应转换事件以及与已定义路由的其他区别是什么?
【问题讨论】:
标签: javascript ember.js