2012-12-13 54 views
0

我正在開發extjs4 + yii框架的網站。我使用邊界佈局作爲視口。 它內部我使用手風琴佈局並顯示主頁。 在主頁有一個登錄窗口,我想在ligin完成後隱藏。我怎樣才能刪除這個窗口。 這裏是我的代碼: -分機js組件查詢

1)Viewport.js:- 
Ext.define('AM.view.Viewport', { 
    extend: 'Ext.container.Viewport', 
    layout: 'border', 
    id:'vp', 
    border: 5, 
    style: { 
     borderColor: 'red', 
     borderStyle: 'solid' 
    }, 
    requires: [ 
       'AM.view.header.Header', 
       'AM.view.login.Login', 
       'AM.view.wordOfDay.WordOfDay', 
       'AM.view.weather.Weather', 
       'AM.view.poll.Poll', 
       'AM.view.qod.QOD', 
       'AM.view.history.History', 
       'AM.view.qod.LastQuestion' 
       ], 


    items: [ 
    { 
     region:'north', 
     xtype: 'headerHeader', 
     margins:5, 
     height:70, 
     //html:'<h1>Welcome</h1>', 
    }, 
    { 
    /* title:'West', 
     region:'west', 
     margins:'0 5 0 5', 
     flex:.3, 
     collapsible:true, 
     split:true, 
     titleCollapse:true, 
    */ 

    // title:'Main menu', 

     region:'west', 
     margins:'0 5 5 5', 
     flex:.3, 
     //collapsible:true, 
     //titleCollapse:true, 
     layout:'accordion', 
     layoutConfig: 
     { 
       animate:false, 
       multi:true 
     }, 
     items:[ 
     { 
      title:'wordOfDay', 
      xtype:'wod' 
     }, 
     { 
      title:'weather Information', 
      xtype:'weather' 
     }, 
     { 
      title:'poll of the day', 
      xtype:'poll' 
     }, 
     { 
      title:'questionOfDay', 
      xtype:'questionOfDay' 
     } 
     ]//end if items 

    }, 
    { 
     //title:'center', 
     region:'center', 
     html:'center region' 
    }, 
    { 
    /* //title:'East', 
     xtype:'loginLogin', 
     region:'east', 
     margins:'0 5 0 5', 
     width:200, 
     //collapsible:true, 
     //collapsed:true, 
    */ 
     region:'east', 
     margins:'0 5 0 5', 
     flex:.3, 
     //collapsible:true, 
     //titleCollapse:true, 
     layout:'accordion', 
     layoutConfig: 
     { 
       animate:false, 
       multi:true 
     }, 
     items:[ 
     { 
      title:'Login Window', 
      xtype:'loginLogin' 
     },  
     { 
      title:'QuestionOfDay', 
      xtype:'questionOfDay' 
     }, 
     { 
      title:'Last Question And its answer', 
      xtype:'lastQusetion' 
     }, 
     { 
      title:'This Day In a History', 
      xtype:'history' 
     } 
     ]//end if items 
    }, 
    { 
     //title:'South', 
     region:'south', 
     margins:'0 5 5 5', 
     flex:.1, 
     html:'<h6 align="center">Footer</h6>', 
     split:false 
    },//mainMenu // used mainMenu when you are using mainMenu variable 
    ]//end if items 
});//End of view port 

2)Login.js :-- this is the login view page 
Ext.define('AM.view.login.Login', 
{ 
     extend:'Ext.form.Panel', 
     id:'lg', 
     alias:'widget.loginLogin', 
     bodyStyle:'padding:5px 5px 0', 
     title:'Login Window', 
     hidden:false, 
     height: 150, 
     //items: 
     //[ 
     //{ 
      //xtype:'form', 
      border:3, 
      items:[ 
        { 
         xtype:'textfield', 
         fieldLabel:'Key In', 
         name:'uname', 
         //width:'10px', 
         anchor:'100%', 
         //flex:2, 
         //labelAlign:'top',    
         // cls:'field-margin', 
         allowBlank:false, 
         //minLength:6, 
         //draggable:true, 
        }, 
        { 
         xtype:'textfield', 
         fieldLabel:'Key', 
         //width:'20px', 
         flex:6, 
         //labelAlign:'top', 
         name:'pass', 
         inputType:'password', 
         allowBlank:false, 
         minLength:6, 
         anchor:'100%', 

        }, 
        { 
         xtype:'button', 
         formBind: true, 
         fieldLabel:'Keylogin', 
         action:'loginAction', 
         text:'login', 
         //width:'20px', 
         flex:6, 
         //labelAlign:'top', 

         anchor:'100%', 

        } 
        ], 
     //}],//end of items 
});//End 

3)這裏是在控制文件中的一些代碼

authenticateUser:function(button) 
{ 
    console.log('enter'); 
    var obj = Ext.ComponentQuery.query('#vp'); 

    obj[0].remove('lg'); 
}  

代碼執行,但不隱藏登錄window.please給我的建議.. 在此先感謝。

+0

你不能刪除視口,你試圖刪除窗口的權利? – dbrin

+0

是的。但我怎麼能刪除登錄窗口或任何。我使用刪除方法,但它不起作用它顯示錯誤消息。我可以使用這種方法? –

+0

是這個問題的答案? – dbrin

回答

2

Ext.ComponentQuery.query()方法總是返回一個對象數組,因此將您的代碼從var obj = Ext.ComponentQuery.query('#vp');更改爲var obj = Ext.ComponentQuery.query('#vp')[0];,它將爲您提供數組中的第一個元素。您需要檢查第一個元素是否爲空

+0

謝謝。它的工作原理,但是當我使用刪除方法,它給出了下面給出的錯誤 - > cmp.remove()是不正確的用法。我怎樣才能使用這個刪除方法? –

0

您的第一個窗口不是窗口,而是面板,對嗎?對。 第二次使用remove方法是爲容器移除其子項。例如:MyPanel.remove(subPanel); - 刪除子面板0​​http://docs.sencha.com/ext-js/4-1/source/AbstractContainer.html#Ext-container-AbstractContainer-method-remove

第三,ComponentQuery.query(selector)返回一個對象數組,即使只找到一個對象。 如何使用它和爲不同的slector類型閱讀文檔:http://docs.sencha.com/ext-js/4-1/#!/api/Ext.ComponentQuery