1

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

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

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 });
  }
});

但是,我的用户对象不会完全是类似的动作query或类似的属性search,所以我不确定这个例子是否适用。

我想我最终会想调用类似的东西:

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

但我只是不确定应用程序会去哪里。

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

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

4

1 回答 1

4

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

这是一个简短的 jsbin,其总体思路是:http: //jsbin.com/ucanam/994/edit

于 2013-09-11T05:02:48.693 回答