这是我在àpp/ pods里面的结构:
|-application |-index |-error |-user ||-index ||-view ||-edit
发生错误时,ember不会加载错误路由.
相反,它尝试加载像index_error或user_error这样的子路由,但这些子路径不存在.
恩伯v2.1
Ember-Cli v1.13.8
解决方法
你提供的结构实际上应该完全按照你所描述的那样去做.
看看this twiddle看一个例子.单击“查看用户”将转换到user.view路由,但单击“编辑用户”将在user.edit路由中引发异常,而是将您置于错误路由上.
需要注意的一点是,您不应该自己在router.js中添加错误路由.它接收转换错误作为其模型,因此如果您手动执行此.route(‘error’)并且不为其提供动态段,则转换将失败.
如果您希望更准确地控制在任何转换期间发生错误时发生的情况,您可以在应用程序路由上实现错误操作.
actions: { error(thrownError) { this.transitionTo('my-error-route'); // Or whatever other handling you want } }
您可以在this twiddle中看到这种安排的完整示例.请注意,这与default error behavior略有不同,因为它将产生完整转换(即URL将被更新),而不是仅仅移动到子状态.