如何抛出Ember.js错误?

Ale*_*s K 5 ember.js

在ember.js应用程序中,我们如何抛出应用程序错误(让它们在控制器 - 路径 - 应用程序层次结构中冒泡?)

我的用例与捕获非ember-data ajax错误并通过与ember数据错误相同的路径处理它们有关.

(即,当遇到来自非restful端点的错误时,允许该错误在应用程序中冒泡,类似于ember-data错误)

med*_*kin 5

如果您想抛出错误,请使用throw new Error("Message");.

用户被重定向到error路由.

使用Promises,您可以对异常做出反应并处理它们.

请参阅:http://emberjs.com/api/classes/RSVP.Promise.html

  • 这不是重定向到ember 1.5.1上的错误路由,但加载工作正常.错误子状断了吗? (2认同)

Rim*_*ian 3

Ember 有自己的EmberError类,它是 Javascript 错误类的子类。

import EmberError from '@ember/error';

export default Route.extend({
  /* Pseudo code... */
  model() {
    if(/* something bad happens */) {
      throw new EmberError('Oh, no! Something bad happened!');
    }
  },
});
Run Code Online (Sandbox Code Playgroud)

您可以在路线中的错误操作中使用它执行某些操作。如果你想让它冒泡,记得返回true

actions: {
  error(error) {
    // do something
    return true;
  },
},
Run Code Online (Sandbox Code Playgroud)

Ember 会自动创建一个错误子状态和一个错误模板,您可以在其中显示有关错误的信息(无需重定向)。您可以这样显示错误application-error.hbs信息error.hbs

<h1>{{model.name}} {{model.status}}</h1>
{{model.stack}}
Run Code Online (Sandbox Code Playgroud)

有关更多选项,请参阅Ember 子状态指南。