2010-05-23 131 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