Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
EXTJS-如何验证元素是否存在?_Extjs - Fatal编程技术网

EXTJS-如何验证元素是否存在?

EXTJS-如何验证元素是否存在?,extjs,Extjs,我需要知道ext formPanel中是否存在boxComponent,以便执行某些操作。。。有什么办法知道吗? 大概是这样的: if(getElementById("boxId") != 'undefined' ){ alert('exists'); } 您可以使用Ext.get('boxId')。如果对象不存在,则返回null,并返回Ext.Element对象 不过,使用getElementById可能会快得多。你有什么特别的反对意见吗?大多数人使用的常见模式是: var myB

我需要知道ext formPanel中是否存在boxComponent,以便执行某些操作。。。有什么办法知道吗? 大概是这样的:

if(getElementById("boxId") != 'undefined' ){
    alert('exists');
} 
您可以使用
Ext.get('boxId')
。如果对象不存在,则返回
null
,并返回
Ext.Element
对象


不过,使用
getElementById
可能会快得多。你有什么特别的反对意见吗?

大多数人使用的常见模式是:

var myBoxCmp = Ext.getCmp('cmpId');
if(myBoxCmp){
    myBoxCmp.doSomething();
}
元素也是这样:

var el = Ext.get('elId');
if(el){
    el.doSomething();
}
您也可以使用像
Container.findById
这样的方法,但是如果您有一个id(假设它是唯一的,应该是唯一的),只需使用
getCmp

编辑:从最初的答案开始已经过了几年,现在
getCmp
通常被视为一个不受欢迎的概念,在应用程序中通常应该避免使用它(推广全局引用,这通常表示在需要时设计不佳)。通常最好使用控制器引用(如果使用MVC)或各种ComponentQuery或容器方法来引用相关组件(例如,等等)。

使用Ext.isEmpty(object)方法


我只是用extjs的方式,我不喜欢使用getElementById(),这是一种原生js方法,可能会导致diffrenet浏览器中出现不兼容问题:

        if (!Ext.getCmp('componentid')) {
            alert('boxId is empty');
    }
此函数打开一个视图,如

openView('MyApp.view.Oeffnungszeiten');

如果视图存在,它将访问旧实例

Ext.get是对哈希表的键控查找,因此它基本上与getElementById一样快(假设最终目标是返回Ext.Element而不是DOM节点),这只是下次执行它时的一个好处。第一次仍然会很慢。同样,如果速度是您的目标,那么您可能不会使用extjs:)True。但实际上,如果您首先使用Ext,就没有太多理由超出其元素抽象。“更快”这几天,你仍然只说了一两毫秒。首先,谢谢大家。问题已经解决了。我已经试过了所有的方法。很高兴知道寻找元素的方法和几种方法之间的区别。Thxi定义了一个id为的面板。现在,当我将其添加到边框布局中心区域时,我应该如何检查它是否存在于中心区域中?因为它也有定义。。
function openView(cid) {
    shortName = cid.substr(cid.lastIndexOf(".")+1, cid.length);
    if(Ext.get(shortName) == null) Ext.create(cid);
   Ext.Viewport.setActiveItem(Ext.getCmp(shortName));
}
openView('MyApp.view.Oeffnungszeiten');