Ember.js - Pod结构中的错误状态

Ember.js - Error States in Pod structure

本文关键字:错误 状态 结构 js Pod Ember      更新时间:2023-09-26

这是我在àpp/pods内部的结构:

|-application
|-index
|-error
|-user
||-index
||-view
||-edit

发生错误时,ember不加载error路由。相反,它尝试加载像index_erroruser_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结构