使用window.document.getElementById访问Ext JS组件

时间:2014-02-13 13:01:45

标签: javascript html extjs

是否可以使用window.document.getElementById访问Ext JS组件? 那不是使用Ext.getCmp。

2 个答案:

答案 0 :(得分:0)

不,你将获得没有ExtJS包装的本机对象。

答案 1 :(得分:0)

通过元素查找Component实际上相当简单;每个Component都有一个主元素,id属性与Component的id匹配。所以我们可以这样做:

function findComponentByElement(node) {
    var topmost = document.body,
        target = node,
        cmp;

    while (target && target.nodeType === 1 && target !== topmost) {
        cmp = Ext.getCmp(target.id);

        if (cmp) {
            return cmp;
        }

        target = target.parentNode;
    }

    return null;
}

var node, cmp;

node = document.getElementById('foo');
cmp  = findComponentByElement(node);

如果你有一个Ext.Element实例而不是一个裸HTMLElement,只需传递它的DOM指针:

var el, cmp;

el  = Ext.Element.getActiveElement(); // Currently focused element
cmp = findComponentByElement(el.dom);

哦,为了完整起见,这里是如何为HTMLElement获取Ext.Element包装器:

var node, el;

node = document.getElementById('bar');
el   = new Ext.Element(node);