开发者

EXTJS - How to verify if element exists?

开发者 https://www.devze.com 2023-01-08 11:09 出处:网络
I need to know if a boxCo开发者_如何学Cmponent exists in a ext formPanel in order to take some actions... Is there some way to know that?

I need to know if a boxCo开发者_如何学Cmponent exists in a ext formPanel in order to take some actions... Is there some way to know that? something like this:

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


The common pattern that most people use is this:

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

Same thing for Elements:

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

You can also use methods like Container.findById, but if you have an id (assuming it is unique, which it should be) just use getCmp.

EDIT: Several years have passed since this original answer, and nowadays getCmp is generally frowned upon as a code smell and should typically be avoided in applications (promotes global references, which generally indicate poor design when they are required). It's typically better to use controller references (if using MVC) or the various ComponentQuery or Container methods to reference related components (e.g. down, child, getComponent, etc.)


I just do it the extjs way and i prefer not to use getElementById() which is a native js method and may cause incompatibility issues in diffrenet browsers:

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


You can use Ext.get('boxId'). It returns null if the object doesn't exist and returns an Ext.Element object.

Using getElementById would probably be much faster though. Do you have any specific objection against it?


Use the Ext.isEmpty(object) method.

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


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

This function opens a view like

openView('MyApp.view.Oeffnungszeiten');

and if the View exists it accesses the old instance

0

精彩评论

暂无评论...
验证码 换一张
取 消