7

关于处理 401 错误的任何想法?

在应用程序初始化程序中,我推迟准备并通过 ember-data 获取当前用户。如果我收到 401,应用程序就会死掉并变得无法使用。我想处理这个错误,然后提前准备。我似乎找不到解决方法。任何信息,将不胜感激!

要点在这里:https ://gist.github.com/unknpwn/6126462

我注意到这里有一个类似的主题,但它似乎已经过时了。

4

2 回答 2

4

之前的答案已经过时了。在当前的 Ember 版本 (1+)events中已弃用,您应该使用actions 对象(而不是函数)。

灰烬示例:

App.ApplicationRoute = Ember.Route.extend({
  actions: {
    error: function(err) {
      // error handler called in case of an error.
      // show the error message to user here
      // or transition to another route
    }
  }
});

Ember CLI 示例:

import Ember from 'ember';

export default Ember.Route.extend({
  actions: {
    error: function(err) {
      // error handler called in case of an error.
      // show the error message to user here
      // or transition to another route
    }
  }
});

使用这些操作处理程序,如果您之前没有在路由中停止它,错误将很好地冒泡到主应用程序路由。

于 2015-06-20T15:32:14.047 回答
2

Application.initializer不是放置这个逻辑的正确位置。它是同步的,它的目的是做一些事情,比如将自定义对象添加到 IOC 容器等。这段代码更model适合ApplicationRoute.

App.ApplicationRoute = Ember.Route.extend({
  beforeModel: function() {
    return App.User.find({ filter: "authenticated" });
  },
  setupController: function(controller, model) {
    controller.set('loggedIn', true);
    controller.set('currentUser', model);// or some property of that model
  },
  events: function() {
    error: function(err) {
      // error handler called in case of an error.
      // show the error message to user here
      // or transition to another route
    }
  }
});
于 2013-08-01T02:22:24.913 回答