2014-01-10 59 views
3

我想開發一個應用程序,將使用Ext.Ajax從Sencha調用REST Servive。Sencha查看不會改變點擊事件

我成功地能夠得到響應,但是當我試圖加載不同的視圖時,什麼也沒有發生。

我參考了this link

App.js

Ext.application({ 名: 'epsoft',

requires: [ 
    'Ext.MessageBox', 
    'Ext.Ajax', 
    'Ext.Container' 
], 

views: [ 
    'Main','admin','login', 
], 

launch: function() { 
    // Destroy the #appLoadingIndicator element 
    Ext.fly('appLoadingIndicator').destroy(); 

    // Initialize the main view 
    Ext.Viewport.add(Ext.create('epsoft.view.login')); 
}, 

)}

LoginController.js

Ext.Msg.alert('title', 'Failure'); 
Ext.Viewport.add(Ext.create('epsoft.view.admin')); 

消息彈出窗口正常,但新視圖未加載。

回答

2

應設置新的視圖作爲activeitem對視,嘗試這種

Ext.Viewport.setActiveItem(Ext.Viewport.add({的xtype: '管理員'}));

在這裏,我假設管理員是您的下一個視圖的xtype。

+0

謝謝拉姆,這也適用。但是,請你告訴我兩者之間有什麼區別?它會幫助我更好地理解。 – Akshay

+0

這是推薦的方法,使用視口爲您正在嘗試創建的視圖添加div標籤,這對我們的答案是共同的,但在您的情況下,您要顯示的視圖位於後臺,您正在銷燬當前視圖(當前視口的活動項目),它顯示您剛剛創建的視圖。這種方法的問題在於,當您嘗試返回時,在這種情況下,您不能銷燬您希望在返回時顯示的視圖。我希望我清楚,如果不是我會進一步闡明 –

0

我不知道是該做的正確的方式,但我試試這個:

讓我們說你login.js已根據配置的一部分ID,類似於下面的例子:

Ext.define('epsoft.view.login', { 
    extend: 'Ext.Container', 
    xtype: 'login', 
    config: { 
     id: 'loginForm', // here is ID 
     items: [ 
        . . . 
       ] 
    } 
}); 

var paneltab = Ext.create('epsoft.view.admin'); //Mention the view name to launch 
Ext.getCmp('loginForm').destroy(); // Destroying the ID 
Ext.Viewport.add(paneltab); // add to the ViewPort 

希望:

然後在你的loginController.js,您可以通過推出新觀點這將是有用的。