2010-05-23 129 views
0

如何將項目添加到現有窗口?我試過win.add(),但它似乎沒有工作。爲什麼?這是我的一段代碼:將項目添加到現有窗口

function combo_service(winTitle,desc,input_param) { 

     /* parametri */ 
     param=input_param.split(","); /* della forma: param[0]="doc1:text", quindi da splittare di nuovo */ 

    /* cosi' non la creo più volte */ 
    win; 

    if (!win) 
    var win = new Ext.Window({ 
     //title:Ext.get('page-title').dom.innerHTML 
     renderTo:Ext.getBody() 
     ,iconCls:'icon-bulb' 
     ,width:420 
     ,height:240 
     ,title:winTitle 
     ,border:false 
     ,layout:'fit' 
     ,items:[{ 
      // form as the only item in window 
      xtype:'form' 
      ,labelWidth:60 
       ,html:desc 
      ,frame:true 
      ,items:[{ 
       // textfield 
       fieldLabel:desc 
       ,xtype:'textfield' 
       ,anchor:'-18' 
       }] 
     }] 
     }); 

win.add({ 
      // form as the only item in window 
      xtype:'form' 
      ,labelWidth:60 
       ,html:desc 
      ,frame:true 
      ,items:[{ 
       // textfield 
       fieldLabel:desc 
       ,xtype:'textfield' 
       ,anchor:'-18' 
       }]}); 

    win.show(); 


}; 

我的代碼有什麼問題?非常感謝你。

回答

2
win; 

聲明創建窗口時贏全局的,那麼

var win = ... 

redeclares它作爲一個局部變量。相反,win應該聲明爲非全局的,但不在此代碼所在的範圍之內(或作爲函數arg傳遞給它)。然後,只需刪除win;行和var關鍵字,並確保所有代碼都引用相同的變量。另外,如果窗口已經被渲染,那麼你添加新的組件,你可能不得不調用win.doLayout()來刷新窗口布局。

+0

非常感謝。這是最終的代碼(對於有同樣問題的人):http://pastebin.com/v7ww7WJc – farhad 2010-05-24 10:25:58