这是我在àpp/pods
内部的结构:
|-application
|-index
|-error
|-user
||-index
||-view
||-edit
发生错误时,ember不加载error
路由。相反,它尝试加载像index_error
或user_error
这样的子路由,但这些子路由不存在。
如何在任何错误时强制Ember加载根error
路由?
安贝v2.1Ember-Cli v1.13.8
你所提供的结构实际上应该做你所描述的你所追求的。
请看下面的例子。点击"查看用户"将切换到user.view
路线,但点击"编辑用户"将在user.edit
路线中引发异常,而不是将您带到error
路线。
router.js
中添加错误路由。它接收转换错误作为它的模型,所以如果你手动执行this.route('error')
并且不给它一个动态段,转换将失败。
如果你想更准确地控制在任何转换期间发生错误时发生的情况,你可以在你的应用程序路由上实现error
动作。
actions: {
error(thrownError) {
this.transitionTo('my-error-route'); // Or whatever other handling you want
}
}
你可以在这篇文章中看到一个完整的例子。请注意,这与默认的错误行为略有不同,因为它将产生一个完整的转换(即URL将被更新),而不仅仅是移动到子状态。
我已经成功地展示了一个pod结构内部的错误路由,如下所示:
-app
--pods
----something
------template.hbs
------route.js
----error
------template.hbs
如果我在/route.js中抛出一个错误,如下所示:
export default Ember.Route.extend({
model() {
throw new Error('AAA');
}
});
和error/template.hbs
的内容:
Arrrh, errror!!!!
显示错误信息。
如果您想要something
的错误子路由,我认为您需要以下内容:
-app
--pods
----something
------template.hbs
------route.js
------error
--------template.hbs
----error
------template.hbs
http://guides.emberjs.com/v2.1.0/routing/loading-and-error-substates/
根据上面的app/application/error
是默认的pod结构