Ember-simple-auth获取用户对象嵌套的promise

时间:2014-03-20 15:30:45

标签: ember.js ember-data promise

我试图获得' session.current_user'所有路径和控制器都可访问的对象。它应该可以作为承诺访问,因此我可以从控制器预先过滤模型。但我似乎无法使承诺链正常工作。

我在ember-simple-auth

的身份验证初始化程序中有这个
Ember.Application.initializer
  name: 'authentication',
  initialize: (container, application) ->
    Ember.SimpleAuth.Authenticators.OAuth2.reopen
      serverTokenEndpoint: '/oauth/token'

    Ember.SimpleAuth.Session.reopen
      +computed
      current_user: ->
        Ember.run ->
          Ember.$.get('/api/v1/credentials/me').then (response) ->
            container.lookup('store:main').find('user', response.user.id)

这在应用程序控制器中:

class App.ApplicationController extends Ember.Controller
  +computed session.current_user
  current_user_gravatar_url: ->
    @get('session.current_user').then (current_user) ->
      # but I get this here
      Em.inspect(current_user)
      # => "<DS.PromiseObject:ember656>"
      # 'http://www.gravatar.com/avatar/' + md5(current_user.get('email'))

对用户模型的请求在应用程序控制器操作之后出现。

XHR finished loading: "http://localhost:3000/api/v1/users/3". 

我在这里做错了什么?嵌套是否太深,或者我应该以某种方式拆分&#39; current_user&#39;计算属性为单独的依赖计算属性&gt;

1 个答案:

答案 0 :(得分:0)

Ember.SimpleAuth回购中有一个例子说明了如何做到这一点:https://github.com/simplabs/ember-simple-auth/blob/master/examples/4-authenticated-account.html