从ApplicationRoute获取IndexRoute的价值

时间:2014-08-16 05:44:26

标签: ember.js

由于某种原因,我无法从ApplicationRoute获取IndexRoute中currentUser的值。如果我在ApplicationRoute中记录它有一个值,但是如果我尝试从IndexRoute调用它并将其记录为未定义。你能告诉我我做错了什么吗?提前感谢您的帮助。

ApplicationRoute

App.ApplicationRoute = Ember.Route.extend
  currentUser: {}
  model: ->
    @store.find('session', 'current').then (session)=>
      @set 'currentUser', session.get('user') if _.isEmpty @get 'currentUser'
      session

IndexRoute

App.IndexRoute = Ember.Route.extend
  beforeModel: (transition)->
    app = @modelFor 'application'
    console.log app.get 'currentUser'

也尝试过:

App.IndexRoute = Ember.Route.extend
  redirect: (->
    app = @modelFor 'application'
    console.log app.get 'currentUser'
  ).on('willTransition')

2 个答案:

答案 0 :(得分:1)

试试这个:

<强> IndexRoute

App.IndexRoute = Ember.Route.extend
  model: ->
    @modelFor 'application'

答案 1 :(得分:1)

我最好的猜测是这是一个承诺问题。尝试返回@modelFor'application',而不是将其赋值给一个值,然后在afterModel钩子中再次访问它。

您也可以尝试使用中间控制器。

所以在你的ApplicationRoute中只需设置一个AuthController:

this.controllerFor('auth').set('currentUser', this.get('currentUser'));

然后看看你是否可以在其他路线中引用它:

this.controllerFor('auth').get('currentUser');