Ember 1.0rc6 - 关于transitionTo的错误消息,尽管它仍然有效

时间:2013-07-13 17:26:08

标签: routing ember.js

我已经设置了authenticatedRoute来重定向到我的应用中的Login路由。但是,我在转换期间收到一条奇怪的错误消息。

Error while loading route: undefined ember.js?body=1:361
Uncaught undefined 

这些错误在ember源代码中的某处,所以我不确定我的代码是什么设置它。我已经查看了几次,无法找到我出错的地方

App.AuthenticatedRoute = Ember.Route.extend
  beforeModel: (transition) ->
    if !App.Auth.signedIn
      return Ember.RSVP.reject();

  error: (reason, transition) ->
    loginController = @controllerFor('login')
    loginController.set('afterLoginTransition', transition)
    @transitionTo('login')

App.LoginRoute = Ember.Route.extend()

App.PromptsRoute = App.AuthenticatedRoute.extend
  model: -> App.Prompt.find()

App.LoginController = Ember.Controller.extend

  email:    null
  password: null
  remember: true
  loginError: null
  afterLoginTransition: null

  login: () ->
    self = @
    App.Auth.signIn
      data:
        email:    @get 'email'
        password: @get 'password'
        remember: @get 'remember'
    .done (response) ->
      self.clearForm()
      self.loginSucceeded()
    .fail (response) ->
      self.set('loginError', "Your username or password was incorrect. Please try again")

  clearForm: ->
    @set('loginError', null)
    @set('email', null)
    @set('password', null)
    @set('remember', true)

  loginSucceeded: ->
    transition = @get('afterLoginTransition')
    if transition
      transition.retry()
    else
      alert("Boink")

1 个答案:

答案 0 :(得分:1)

我看错了一件事是错误处理程序。它需要位于events上的AuthenticatedRoute对象内。

events: {
  error: (reason, transition) ->
    loginController = @controllerFor('login')
    loginController.set('afterLoginTransition', transition)
    @transitionTo('login')
}

除此之外,显然是undefined。在dev工具控制台中的异常消息之后的堆栈跟踪中应该看到的确切内容/位置。堆栈跟踪会在某种程度上显示应用程序代码中的哪种方法触发异常。

尽可能尝试发布jsbin。