在Ember中遇到错误时转换

时间:2014-01-06 12:38:20

标签: ember.js

我正在this.transitionTo('route name')错误操作中尝试ApplicationRoute

似乎发生的事情是,当我点击链接时,它会遇到错误,并且没有转换到目标路线,它似乎说它正在转换到它刚刚再次进入的路线。这是使用{{#link-to}}所以我觉得那里有一些神奇的东西......

我正在尝试使用this example

错误发生在路由上的model()方法(使用jquery并返回promise [jqXHR]),因为我返回了401 http代码。

这不正确吗?

App.ApplicationRoute = Ember.Route.extend(
    actions:
        error: (error, transition) ->
            if error.status == 401
                @transitionTo('login')
)

我尝试过的另一件事是设置.ajaxError方法并在那里进行转换,但结果似乎也没有转换。

App.ApplicationRoute = Ember.Route.extend(
    setupController: (controller, model) ->
        route = @
        Ember.$(document).ajaxError((event, jqXHR, ajaxSettings, error) ->
            if jqXHR.status == 401
                route.transitionTo('login')
        )

        controller.set('content', model)
)

有没有人在ember 1.2.0上工作?

2 个答案:

答案 0 :(得分:3)

尝试在错误挂钩中返回true,以冒泡错误事件。

从文档(http://emberjs.com/guides/routing/asynchronous-routing/#toc_when-promises-reject):

actions: {
  error: function(reason) {
    alert(reason); // "FAIL"

    // Can transition to another route here, e.g.
    // this.transitionTo('index');

    // Uncomment the line below to bubble this error event:
    // return true;
  }
}

答案 1 :(得分:0)

原来这是我的问题。我有一些额外的逻辑,基本上反对我的过渡!糟糕!