Показать сообщение отдельно
  #1 (permalink)  
Старый 14.09.2014, 19:53
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

есть ли готовый метод?
вообщем написал вот такую функцию:

function is (className, object) {
var cl = Ext.ClassManager.get(Ext.getClassName(object)) || {};
  do {
    if (cl.$className === className)
      return true;
  } while (cl = cl.superclass);
  
  return false;
}


аргументами которой является имя класса и объект. функция проверяет, есть ли в наследниках данного объекта данный класс. например:

мы создаем вот такие экземпляры классов:
var myGrid = Ext.create('Ext.grid.Panel', {/*аргументы, не важно какие*/});
var myPanel = Ext.create('Ext.form.Panel', {/*аргументы, не важно какие*/});

если мы посмотрим на их родителей то увидим вот такую иерархию для первого:

Ext.Base
Ext.AbstractComponent
Ext.Component
Ext.container.AbstractContainer
Ext.container.Container
Ext.panel.AbstractPanel
Ext.panel.Panel
Ext.panel.Table
Ext.grid.Panel

и вот такую для второго:
Ext.Base
Ext.AbstractComponent
Ext.Component
Ext.container.AbstractContainer
Ext.container.Container
Ext.panel.AbstractPanel
Ext.panel.Panel
Ext.form.Panel


так вот, если мы запустим мою функцию:
is('Ext.panel.Table', myGrid); //вернет true, т.к. в иерархии есть этот класс
is('Ext.panel.Table', myPanel); //вернет false, т.к. в иерархии нет этого класса

is('Ext.panel.Panel', myGrid); //вернет true
is('Ext.panel.Panel', myPanel); //вернет true


вопрос в том, есть ли стандартная такая функция у extjs? чет я не найду))
Ответить с цитированием