2014-04-23 67 views
0

我正在嘗試在視圖之間切換應用程序,具體取決於用戶是否登錄。應用程序將嘗試首先加載主視圖,然後如果您未登錄,則控制器的其中一個啓動功能將切換到登錄表單。此部分沒有任何問題。在視圖之間切換的應用程序

問題是,當用戶填寫登錄表單並登錄時,視圖確實會更改爲主視圖,但它不會接收事件(單擊註銷按鈕不會執行任何操作)。我知道這不是一個視圖本身存在問題,因爲如果在不切換到登錄屏幕的情況下加載主視圖,它將檢測到單擊註銷按鈕。

以我控制器中的一個:

launch: function() { 
    this.session = localStorage.getItem('session'); 
    if(!this.session) { 
     Ext.Viewport.remove(Ext.Viewport.getActiveItem(), true); 
     Ext.Viewport.add(Ext.create('App.view.Login')); 
    } 
}, 

而當登錄情況,我切換到像這樣的主視圖(其包括註銷按鈕)

Ext.Viewport.remove(Ext.Viewport.getActiveItem(), true); 
Ext.Viewport.add(Ext.create('App.view.Main')); 
Ext.Msg.alert('Logged In', 'Login successful.'); 

回答

0

因此,我發現了不顯而易見答案:在控制器中定義事件時,我需要在標識符之前添加按鈕,例如:

config: { 
    refs: { 
     loginForm: 'loginForm', 
     logoutForm: 'logoutForm' 
    }, 
    control: { 
     'button#loginButton' : { 
      tap: 'onLogin' 
     }, 
     'button#logoutButton' : { 
      tap: 'onLogout' 
     } 
    } 
},