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