如何检查extjs4.1中是否存在xtype对象

时间:2013-09-04 13:32:18

标签: extjs extjs4.1 extjs4.2 sencha-architect

我使用Ext.component.Query获取对象。我需要检查对象是否存在。如果对象存在,我需要删除该对象。谁能告诉我怎么做?

由于

5 个答案:

答案 0 :(得分:2)

使用Ext.ComponentQuery

进行简单检查
var check = Ext.ComponentQuery.query('yourXtype');
if (check.length > 0)
    //do something
else
    //do other something

答案 1 :(得分:2)

正如其他海报所提到的那样,您正在寻找的方法是Ext.ComponentQuery,它返回一个数组,然后您可以检查通过length的长度,这将反过来告诉您是否对象存在与否。如果该对象存在,则可以通过Ext.AbstractComponent

destroy()方法销毁该对象

我已经制作了一个jsFiddle示例,演示了您在这里要做的事情:http://jsfiddle.net/mPYPw/

来自小提琴的代码:

Ext.create('Ext.panel.Panel', {
    name : 'myPanel',
    title: 'Panel 1',
    width: 200,
    html: '<b>Its a panel!</b>',
    renderTo: Ext.getBody()
});

Ext.create('Ext.panel.Panel', {
    name : 'myPanel',
    title: 'Panel 2',
    width: 200,
    html: 'Look, another panel!',
    renderTo: Ext.getBody(),
    dockedItems: [{
    xtype: 'toolbar',
    dock : 'bottom',
    items: [{
        text: 'Destroy all panels!',
        handler: function(){
            // Here we can query for the panels
            var panels = Ext.ComponentQuery.query('panel[name=myPanel]'),
                 trees = Ext.ComponentQuery.query('treepanel');

            // @param {Ext.panel.Panel[]} panels Array of panel components
            if(panels.length > 0){
                alert("About to destroy " + panels.length + " Panels!");
                Ext.each(panels, function(panel){
                    panel.destroy();
                });
            }

            // There are no tree panels
            if(!trees.length){
                alert("There are no tree panels to destroy!");
            }
        }
    }]
    }]
});

答案 2 :(得分:1)

我知道文档在其中一个版本上搞砸了...我不知道它是否在Ext JS 4.2中仍然是相同的,但是在4.1.1中你可以通过xtype使用某些东西来查询Ext JS对象类似于:

Ext.ComponentQuery.query('xtype');

Ext.ComponentQuery.query('gridpanel');

答案 3 :(得分:0)

我认为Ext.ComponentQuery-method-query解释了它。

答案 4 :(得分:0)

首先注意Ext.getCmp(“id”)适用于小型应用程序.. 如果你倾向于有一个大的应用程序,你可以去组件查询。 这可以通过两种方式完成您可以使用“Xtype”或“组件ID”(注意组件ID必须以#为前缀)。