在哪里保存EmberJS应用程序的详细用户会话信息?

时间:2013-09-10 21:05:43

标签: ember.js ember-data

我正在构建我的第一个EmberJS应用程序,我仍然试图围绕最佳实践和约定。我使用ember-data与RESTful API进行通信,ember-auth运行良好,可以登录并保存用户的ID& OAuth2访问令牌。但是,我现在希望维护其他用户信息(例如姓名,电子邮件等),以便在导航栏和应用的其他各个区域中使用。

为此,我认为从一个单独的端点(例如/users/<id>)读取一个User对象(模型)会很有帮助。由于整个应用都需要此信息,因此我倾向于将其存储在ApplicationController上,有点像来自Ember的文档this example

App.ApplicationController = Ember.Controller.extend({
  // the initial value of the `search` property
  search: '',

  query: function() {
    // the current value of the text field
    var query = this.get('search');
    this.transitionToRoute('search', { query: query });
  }
});

但是,我的用户对象不会像querysearch这样的属性,所以我不确定此示例是否适用。

我想我最终会打电话给:

this.get('store').find('user', App.Auth.get('userId'));

但我不知道应用程序中的哪个位置会发生。

主要问题:根据Ember约定,ApplicationController是否为此信息提供了正确的位置,如果是,那么从REST API中检索它的代码是什么样的?

感谢任何想法让我走上正轨。

1 个答案:

答案 0 :(得分:4)

我之前采用的一般方法是将当前登录的用户存储为App.CurrentUser。然后你可以在任何模板中使用它。在我提取User对象后,我调用Ember.set('App.CurrentUser',user)来存储它,然后Ember.get('App.CurrentUser')在其他路由或控制器中检索它。

这是一个简短的jsbin,其中包含一般概念:http://jsbin.com/ucanam/994/edit