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

时间:2010-07-19 16:35:23

标签: extjs

我需要知道在一个ext formPanel中是否存在一个boxComponent才能采取某些行动......有没有办法知道这一点? 像这样的东西:

if(getElementById("boxId") != 'undefined' ){
    alert('exists');
} 

5 个答案:

答案 0 :(得分:16)

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

var myBoxCmp = Ext.getCmp('cmpId');
if(myBoxCmp){
    myBoxCmp.doSomething();
}

元素相同:

var el = Ext.get('elId');
if(el){
    el.doSomething();
}

你也可以使用像Container.findById这样的方法,但是如果你有一个id(假设它是唯一的,那应该是),只需使用getCmp

编辑:自这个原始答案已经过去了几年,现在getCmp通常不赞成code smell,应该通常在应用程序中避免使用(促进全局引用,这通常表明设计时很差)他们是必需的)。通常最好使用控制器引用(如果使用MVC)或各种ComponentQuery或Container方法来引用相关组件(例如downchildgetComponent等。)

答案 1 :(得分:3)

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

        if (!Ext.getCmp('componentid')) {
            alert('boxId is empty');
    }

答案 2 :(得分:0)

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

使用getElementById可能要快得多。你对此有任何具体的反对意见吗?

答案 3 :(得分:0)

使用Ext.isEmpty(object)方法。

if(Ext.isEmpty(getElementById("boxId")) {
   alert('boxId is empty');
}

答案 4 :(得分:0)

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');

如果View存在,则访问旧实例