2012-10-09 51 views
1

我正在構建Sencha Touch應用程序,並在登錄後重定向或更改其他視圖。登錄後,我需要把它帶到首頁。但我下面的代碼在登錄控制器的authenticateUser()不起作用Sencha Touch - 重定向到另一個視圖

也試過Ext.Viewport.push(homePanel),Ext.Viewport.setActiveItem(homePanel)。但沒有任何工作。

LoginView

​​

登錄控制器

Ext.define("Mobile.controller.LoginController", { 
extend: "Ext.app.Controller", 
views: ['LoginView', 'HomeView'], 
models: ['UserModel'], 
config: { 
    refs: { 
     loginForm: "#loginFormPanel" 
    }, 
    control: { 
     'button[action=login]': { 
      tap: "authenticateUser" 
     } 
    } 
}, 

authenticateUser: function (button) { 
      loginForm.submit({ 
      method: 'POST', 
      success: function (form, result) { 
      //THIS IS NOT WORKING 
       Ext.Viewport.add(Ext.create('Mobile.view.HomeView')); 

      }, 
      failure: function (form, result) {     
       console.log('Error'); 
       Ext.Msg.alert('Check the logic for login and redirect'); 
      } 
     }); 
     }   
}); 

首頁查看

Ext.define('Mobile.view.HomeView', { 
extend: 'Ext.Container', 
id: 'homescreen', 
alias: "widget.homepanel", 
config: { 
    layout: { 
     type: 'card', 
     animation: { 
      type: 'flip' 
     } 
    }, 
    items: [ 
     { 
      xtype: 'toolbar', 
      docked: 'bottom', 
      id: 'Toolbar', 
      title: 'My App', 
      items: [ 
       { 
        id: 'settingsBtn', 
        xtype: 'button', 
        iconCls: 'settings', 
        ui: 'plain', 
        iconMask: true 
       } 
      ] 
     }, 
     { 
      xclass: 'Mobile.view.ActionListView' 
     } 
    ] 
}, 
}); 

個App.JS

Ext.application({ 
name: "Mobile", 
controllers: ["LoginController", "HomeController"], 
views: ['LoginView', 'HomeView', 'ActionListView'], 
models: ['UserModel', 'OrganizationModel', 'ActionModel'], 
stores: ['OrganizationStore', 'ActionStore'], 
launch: function() { 

    var loginPanel = Ext.create('Ext.Panel', { 
     layout: 'fit', 
     items: [ 
      { 
       xtype: 'mylogin' 
      } 
     ] 
    }); 
    Ext.Viewport.add(loginPanel); 
} 

}); 

任何一個有什麼想法? 已經提及Load another view after login with sencha touch 2.0。但沒有答案。請幫忙

+0

任何錯誤即將到來?如果是,請說明。 –

+0

沒有錯誤顯示。我也檢查了console.log。它執行出錯。但看法並沒有改變。不能改變視圖像Ext.Viewport.add(Ext.create('Mobile.view.HomeView')); ? –

+0

最初我使用相同的方式在app.js lauch函數中添加登錄視圖。現在我想用新視圖替換它,也不應允許用戶在認證後返回登錄頁面。 –

回答

6

您需要爲您的HomeView一個參考:

refs: { 
     HomeView: { 
      autoCreate: true, 
      selector: 'HomeView', 
      xtype: 'HomeView' 
     }, 
    } 

並將此觀點活躍:

Ext.Viewport.setActiveItem(this.getHomeView()); 
+0

嗨,它爲我工作。然而,我基於'this'關鍵字範圍和'refs'修改了一些基於我放在我的問題中的代碼。謝謝你的幫助 !! –

+0

我不喜歡使用id propety,我更喜歡用xtype別名創建一個ref,這種方式你沒有機會複製id的...但是是一個選項... – MattioliSencha

0

試試這個。可能是這項工作。

authenticateUser: function (button) { 
     loginForm.submit({ 
     method: 'POST', 
     success: function (form, result) { 

     var home= Ext.create('Mobile.view.HomeView'); 
     Ext.getCmp('loginFormPanel').destroy(); 
     Ext.Viewport.add(paneltab); 

     } 
+0

這不適合我。我試過這種方式 –

相關問題