2013-09-10 59 views
1

我正在构建我的第一个EmberJS应用程序,并且仍然试图围绕最佳实践&惯例。我正在使用ember-data与RESTful API交谈,并且ember-auth运行良好,足以登录并保存用户的ID & OAuth2访问令牌。不过,我现在想维护额外的用户信息(例如名称,电子邮件等),以用于导航栏和应用程序的各个其他区域。哪里可以保存EmberJS应用程序的详细用户会话信息?

为此,我认为从单独的端点(例如/users/<id>)读取用户对象(模型)会有所帮助。由于此信息,将需要在整个应用程序,我倾向于将其存储在ApplicationController,有点像this example从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')); 

,但我只是不知道在哪里的app会去。

主要问题:ApplicationController是每个Ember约定的这个信息的正确位置,如果是这样,那么代码看起来像从REST API检索它的代码是什么?

欣赏任何想法让我走上正轨。

回答

4

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

下面是一个简短jsbin与总体思路:http://jsbin.com/ucanam/994/edit

+0

非常有帮助的,这完美的作品,谢谢!另一个说明:我刚刚发现,ember-auth在登录时支持拉取用户模型(请参阅[docs](http://ember-auth.herokuapp.com/docs),“我的应用程序有一个用户模型称为“成员”,实现'find(id)'。“)。其他人也可能会觉得这很有帮助。 – bcm360

相关问题