将项添加到现有窗口

时间:2010-05-23 23:09:30

标签: extjs

如何将项目添加到现有窗口?我尝试了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();


}; 

我的代码出了什么问题?非常感谢你。

1 个答案:

答案 0 :(得分:2)

win;

宣布胜利为全球,然后

var win = ...

在创建窗口时将其重新声明为本地var。相反,win应该被声明为非全局的,但不在此代码所在的范围内(或作为函数arg传递给它)。然后,只需删除win;行和var关键字,并确保所有代码都引用相同的变量。

此外,如果窗口已经渲染,那么您在其中添加新组件,您可能需要调用win.doLayout()才能刷新窗口布局。