есть ли готовый метод?
вообщем написал вот такую функцию:
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, время: 05:12. |