есть ли готовый метод?
вообщем написал вот такую функцию:
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? чет я не найду)) |
а instanceof не подойдет?
myGrid instanceof Ext.panel.Table |
мдяя)) отдыхать надо))
|
конечно 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> |
Часовой пояс GMT +3, время: 23:08. |