比如下面一段代码,已经renderTo了一个叫cmb的层。
    var GetMenuId=function(value)
    {
                Ext.reg('treecombo', Ext.ux.LovTreeCombo);
                var lovTreeCombo2 = new Ext.ux.LovTreeCombo({
                renderTo: 'cmb',
                url: 'getPower.aspx?PowerId='+rowId,
                emptyText: '选择权限',
                width: 200,
                listWidth: 180
            });
    }我在别的地方调用他,一个窗体里调用,但每次调用,他都会renderTo一个出来,打开10次这个窗体,他就会出现10个renderTo的combobox Tree,我的意思是如果发现他renderTo过了以后,就不要再renderTo了,用什么方法判断? 

解决方案 »

  1.   

    给对象设置一个id,每次执行代码前,使用Ext.getCmp(id),判断是否能获取到对象
    如果获取的到,就已存在,不做动作,否则,执行你的代码,执行render动作.
      

  2.   

    先感谢下楼上,我那个cmb是一个div
    用Ext.getCmp能获取到吗?
    我都是用jQuery('#cmb')方法来获取的
    能不能讲的详细点.
      

  3.   

    如果层cmd原来是空的,判断cmd中是否已经存在元素(innerHTML是否有值)。
      

  4.   

    if($('#cmb').innerHTML==null) ??
    这样不行哦,用'' 也不行
    这些都试过了
      

  5.   

    cmb是你的DIV的ID
    我说的是给你的combo指定一个id,获取combo对象
    对返回结果进行判断,再进行动作.
    不是对DIV进行判断
    如果要对DIV进行判断的话,应该也可以的
    1.通过innerHTML属性判断
    2.通过判断是否有子节点进行判断
      

  6.   

    用Component对象的rendered属性判断
    if(lovTreeCombo2.rendered) ...或者if(Ext.getCmp("xxx").rendered)...
    var lovTreeCombo2 = new Ext.ux.LovTreeCombo({
            id:'xxx',
            renderTo: 'cmb',
            url: 'getPower.aspx?PowerId='+rowId, 
            emptyText: '选择权限', 
            width: 200, 
            listWidth: 180 
    });