Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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? чет я не найду))
Ответить с цитированием
  #2 (permalink)  
Старый 15.09.2014, 05:18
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 214

а instanceof не подойдет?
myGrid instanceof Ext.panel.Table
Ответить с цитированием
  #3 (permalink)  
Старый 15.09.2014, 08:11
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

мдяя)) отдыхать надо))
Ответить с цитированием
  #4 (permalink)  
Старый 15.09.2014, 08:49
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

конечно instanceof сработает

<!DOCTYPE html>
<html>
<head>
    <title>demo</title>
    <script src='//cdn.sencha.io/ext-4.2.0-gpl/ext-all.js'></script>
    <link rel="stylesheet" href="//cdn.sencha.io/ext-4.2.0-gpl/resources/css/ext-all.css">
    <script>

     
    Ext.onReady(function() {

       Ext.define('User', {
          extend: 'Ext.data.Model',
          fields: [ 'name', 'phone' ]
      });
      
      var userStore = Ext.create('Ext.data.Store', {
          model: 'User',
          data: [
              { name: 'Lisa', phone: '555-111-1224' },
              { name: 'Bart', phone: '555-222-1234' }
              
          ]
      });
      
      var myGrid = Ext.create('Ext.grid.Panel', {
          renderTo: Ext.getBody(),
          store: userStore,
          width: 300,
          title: 'Application Users',
          columns: [
              {
                  text: 'Name',
                  width: 100,
                  dataIndex: 'name'
              },{
                  text: 'Phone Number',
                  flex: 1,
                  dataIndex: 'phone'
              }
          ]
      });
      
      alert(myGrid instanceof Ext.panel.Table); // true
      alert(myGrid instanceof Ext.panel.Panel); // true
      
      alert(myGrid instanceof Ext.button.Button); // false
      
        
    });                    
 
    </script>
</head>
  <body></body>
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть готовый скрипт. Нужно поправить. sergant Работа 4 17.11.2013 12:24
Метод JQuery $.post работает через раз Dimaz AJAX и COMET 3 22.11.2012 17:52
Передача полю объекта - массиву, значения элемента через set метод poorking Общие вопросы Javascript 1 13.02.2011 20:22
1. Календарь 2. объект String метод getEMail Мандариновая Общие вопросы Javascript 8 31.10.2008 11:33