2013-09-10 89 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

相關問題