2014-04-11 60 views
0

對於我的UI,我需要在我的應用程序模板中爲導航欄顯示一些信息。我需要顯示更準確的帳戶名稱。Emberjs自動更新視圖

當我第一次加載我的頁面時,我的導航欄是空的,但是當我登錄時,我進行了轉換後,我想在導航欄上顯示這些信息。

問題是,當您在登錄頁面上時,信息不是我的本地存儲,但是當您在主頁上時,我的localstorage已填充,但在我的視圖中沒有任何更改。

App.ApplicationView = Ember.View.extend({ 
    username: fctToGetUserName() 
}) 

是否有任何方法可以在您每次修改某些數據時更新視圖?

[編輯]

是否可以用我的登錄後的觀察,我認爲像這樣觸發init方法?

App.LoginController = Ember.Controller.extend({ 
    actions: { 
     login: function() { 
      //DO MY LOGIN STUFF AND POPULATE MY LOCALSTORAGE AND CIE 
      var isRegistered = true; 
     } 
    } 
}) 

App.ApplicationView = Ember.View.extend({ 
    myVar: null, 

    actions: { 
     initMyVar: function() { 
      myVar = localStorage["myVar"]; 
     }.observes('isRegistered') 
    } 
}) 

回答

0

我會向控制器發送一個動作來更新視圖。類似這樣的:

App.LoginController = Ember.Controller.extend({ 
    needs: ['application'], 

    actions: { 
     login: function() { 
      var controller = this.get('controllers.application'); 
      controller.send('didLogin'); 
     } 
    } 
}); 

App.ApplicationController = Ember.ObjectController.extend({ 
    myVar: null, 

    actions: { 
     didLogin: function() { 
      this.set('myVar', localStorage['myVar']); 
     } 
    } 
}); 

App.ApplicationView = Ember.View.extend({ 
    myVar: Ember.computed.alias('controller.myVar') 
});