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

Vic*_*tor 10 extjs

我需要知道在一个ext formPanel中是否存在一个boxComponent才能采取某些行动......有什么办法可以知道吗?这样的事情:

if(getElementById("boxId") != 'undefined' ){
    alert('exists');
} 
Run Code Online (Sandbox Code Playgroud)

Bri*_*kau 16

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

var myBoxCmp = Ext.getCmp('cmpId');
if(myBoxCmp){
    myBoxCmp.doSomething();
}
Run Code Online (Sandbox Code Playgroud)

元素相同:

var el = Ext.get('elId');
if(el){
    el.doSomething();
}
Run Code Online (Sandbox Code Playgroud)

您也可以使用类似的方法Container.findById,但如果您有一个id(假设它是唯一的,应该是它),只需使用getCmp.

编辑:自这个原始答案已经过去了好几年,现在getCmp通常不赞成代码气味,应该在应用程序中避免使用(促进全局引用,通常表示在需要时设计不佳).通常最好使用控制器引用(如果使用MVC)或各种ComponentQuery或Container方法来引用相关组件(例如down,child,getComponent等)


Wol*_*lph 0

您可以使用Ext.get('boxId')null如果该对象不存在则返回并返回一个Ext.Element对象。

不过使用getElementById可能会快得多。您对此有什么具体的反对意见吗?