抓取Extjs组件

抓取Extjs组件,extjs,extjs3,Extjs,Extjs3,请帮助理解为什么下面的注释代码在ExtJs 3.4上不起作用: var mywin=new Ext.Window({ width : 200, height: 150, title : 'Accordion', layout: 'accordion', border: false, items: [ panel1, panel2 ]

请帮助理解为什么下面的注释代码在ExtJs 3.4上不起作用:

var mywin=new Ext.Window({
        width : 200,
        height: 150,
        title : 'Accordion',
        layout: 'accordion',
        border: false,
        items: [
            panel1,
            panel2
        ]
    }).show();

    <!--Ext.getCmp('mywin').add({ - THIS DOES NOT WORK ,while below works-->

    mywin.add({
        title: 'Appended panel',
        id: 'addedPanel',
        html : 'Add Me!'
    });
    mywin.doLayout();
var mywin=新的外部窗口({
宽度:200,
身高:150,
标题:“手风琴”,
布局:“手风琴”,
边界:错,
项目:[
小组1,
小组2
]
}).show();
mywin.add({
标题:“附加面板”,
id:“addedPanel”,
html:“添加我!”
});
mywin.doLayout();

mywin
是对您创建的窗口对象的引用。这只是一个使用变量赋值的普通JS构造

Ext.getCmp('mywin')
尝试查找具有
id
属性
mywin
的组件。通常最好避免使用
Ext.getCmp
,除非您只创建一个组件实例,因为它必须是全局唯一的。

Ext.getCmp('x')仅当x是某个组件的id(无论您想使用什么面板或窗口)时才起作用。只需提供一个id字段(id:'component_id'),并在组件的id上使用Ext.getCmp。
在许多情况下,您也可以使用lookupReference,请查看extjs文档。

您可以尝试使用以下方法获取对窗口的引用(尽管您的mywin变量中已经有了它):


但问题是您试图使用变量名称引用窗口组件,因此正如前面的回答中所述,您需要使用
itemId:'mywin'
id:'mywin'
,因为就目前而言,实际上没有任何组件具有itemId或具有该名称的id。

当您已经有一个组件的引用时,为什么要查询该组件?我知道他已经有了该组件的引用,我在我的帖子中提到了它,我回答了他关于获取其窗口引用的部分问题,也许我的回答不够清楚。我的错。特别是Ext.getCmp部分。
var winInstance = Ext.ComponentQuery.query('mywin')[0];
   winInstance.add({
        title: 'Appended panel',
        id: 'addedPanel',
        html : 'Add Me!'
    });