在Pod结构中出错状态
这里是我在àpp/pods
里面的结构:
|-application
|-index
|-error
|-user
||-index
||-view
||-edit
发生错误时,ember不会加载error
路由。 相反,它会尝试加载像index_error
或user_error
这样的子路由,但这些路由不存在。
如何强制Ember加载任何错误的根error
路由?
Ember v2.1 Ember-Cli v1.13.8
您提供的结构实际上应该完全按照您所描述的内容进行。
看看这个旋律来看一个例子。 点击'查看用户'将转换到user.view
路由,但单击'编辑用户'将引发user.edit
路由中的异常,并将其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
如果我在如下所示的something / 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结构中的默认值。