2013-05-28 96 views
1

我想在用戶登錄後更新視圖。從服務器獲取他的個人資料照片,姓名等,並使用該信息刷新視圖。我不想改變我的路線。訪問動態參數EmberJS

我處理登錄的方式是使用布爾變量isLoggedIn。一旦用戶登錄,我將它的值更改爲true。我有一個綁定監聽該變量的更改,然後使用用戶信息執行實際路由模型的更新。

App.TripsRoute = Ember.Route.extend 
isLoggedInBinding: 'App.Session.isLoggedIn' 

isLoggedInChanged: (-> 
    @model() 
).observes('isLoggedIn') 

model: -> 
    App.Trip.find() 

所以問題是:有沒有辦法從路徑的自定義方法中訪問動態參數來更新相關模型?

注意:我不想在路由的模型鉤子內部這樣做,因爲它只在通過URL輸入時執行。

回答

1

您可以在App中存儲對當前用戶的引用,並訪問該引用以確定用戶是否已登錄並使用詳細信息更新當前視圖。

商店currentUser

App = Ember.Application.create({ 
    currentUser: null 
}); 

那麼可以獲取/使用App.get('currentUser')App.set('currentUser', newUser)設置在您的應用程序的任何地方。

在模板中,你可以檢查用戶登錄與否,並自動顯示自己的信息,如果他們已經登錄:

{{#if App.currentUser }} 
    <img {{bindAttr src='App.currentUser.avatarURL'}} /> </br> 
    Logged in as: {{App.currentUser.name}} 
    {{else}} 
    Not logged in. 
    {{/if}} 

一旦你更新App.currentUser與當前用戶的用戶對象Ember的數據綁定將更新您的視圖將自動與配置文件信息。

Example in JSBin