我正在构建我的第一个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 });
}
});
但是,我的用户对象不会像query
或search
这样的属性,所以我不确定此示例是否适用。
我想我最终会打电话给:
this.get('store').find('user', App.Auth.get('userId'));
但我不知道应用程序中的哪个位置会发生。
主要问题:根据Ember约定,ApplicationController
是否为此信息提供了正确的位置,如果是,那么从REST API中检索它的代码是什么样的?
感谢任何想法让我走上正轨。
答案 0 :(得分:4)
我之前采用的一般方法是将当前登录的用户存储为App.CurrentUser
。然后你可以在任何模板中使用它。在我提取User
对象后,我调用Ember.set('App.CurrentUser',user)
来存储它,然后Ember.get('App.CurrentUser')
在其他路由或控制器中检索它。
这是一个简短的jsbin,其中包含一般概念:http://jsbin.com/ucanam/994/edit