2014-02-13 5 views

ответ

0

Нет, вы получите собственный объект без оболочки ExtJS.

+0

Могу ли я получить доступ к данным объекта? Например, получить заголовок панели, получить текущую активную вкладку в панели и т. Д.? –

+0

Как правило, да, вы получите экземпляр HTMLElement. Если активная вкладка имеет определенный класс css, вы можете ее проверить, если вы знаете элемент заголовка идентификатора панели, вы можете получить его текст, но это не будет Ext JS api. Это будут «родные» операции DOM, вы можете просто получить panel.title, вам нужно найти точный элемент dom dom и получить его свойство innterText. – lavrik

+0

Спасибо. Но какой идентификатор я должен использовать? Это тот же идентификатор, который используется в Ext JS api. когда компонент определен? (Поле «id:») –

0

На самом деле довольно тривиально искать компонент по элементу; каждый компонент имеет основной элемент с атрибутом id, соответствующим 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); 

О, и ради только для полноты , вот как получить оболочку Ext.Element для HTMLElement:

var node, el; 

node = document.getElementById('bar'); 
el = new Ext.Element(node); 
Смежные вопросы