由于某种原因,我无法从ApplicationRoute获取IndexRoute中currentUser的值。如果我在ApplicationRoute中记录它有一个值,但是如果我尝试从IndexRoute调用它并将其记录为未定义。你能告诉我我做错了什么吗?提前感谢您的帮助。
App.ApplicationRoute = Ember.Route.extend
currentUser: {}
model: ->
@store.find('session', 'current').then (session)=>
@set 'currentUser', session.get('user') if _.isEmpty @get 'currentUser'
session
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')
答案 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');