带有承诺数据的Ember服务属性

时间:2015-08-29 22:05:02

标签: ember.js

我有一个获取当前用户的服务,当我返回一个硬编码对象时它会正确返回,但是我不能让它从ajax调用返回数据。

export default  Ember.Service.extend({
  currentUser: Ember.computed(function() {
    Ember.$.ajax({
      url: "http://localhost:8000/v1/me/"
    }).then(function(data){
      console.log(data);
      return data;
    },
    function(err){
      console.log(err);
    });
  }),
});

根据承诺中的console.log,我知道数据正确返回。

当我在控制器中使用此服务时,它没有为currentUser返回任何内容,但是我知道所有内容都正确连接,因为如果我将Ember.Object替换为ajax查询,它会将该对象返回给Controller。

我是否需要对包含ajax查询的属性执行一些特殊操作才能在控制器中使用返回的数据?

1 个答案:

答案 0 :(得分:0)

我不认为它会以你想要的方式运作。至少我从未读过你可以将promise作为计算属性返回。您可以做的是在客户端授权时从服务器获取当前用户并将其保存在例如本地存储中。并且在您的计算属性中从本地存储读取数据并将其返回。

Here你可能会发现一个有趣的讨论,在同样的情况下帮助了我。如果你使用ember-simple-auth,你甚至可以找到一个可以使用的代码。