2010-04-06 5 views
0

Я хотел бы знать, можно ли инициализировать класс по его идентификатору.Включить класс с данным идентификатором в ExtJS

Например, у нас есть класс, расширяющий Ext.grid.GridPanel с свойством id, можно ли инициализировать класс, просто зная его идентификатор (который является идентификатором компонента в этом случае)?

+0

Если вы имеете в виду «искать экземпляр», а не «экземпляр», то 'Ext.getCmp ('id') '- ваш ответ. –

ответ

0

Не без рекурсивного зацикливания на каждом объекте, висящем window, ищем id свойства, а затем находим тот, который соответствует.

+0

Eh, Ext Js имеет такие утилиты, как 'Ext.getCmp', чем делает ненужным этот вид DOM. –

0

Что вы подразумеваете под экземпляром? Если он получил идентификатор, он уже был создан.

Идентификатор является свойством объекта, а не класса. Идентификаторы не являются статическими, но относятся к экземплярам класса после их создания. В конструкторе вы должны установить идентификатор, который может быть использован в дальнейшем для получения экземпляра объекта:

Ext.getCmp('id'); 

даст вам ссылку на компонент ExtJS, если это то, что вы после этого.

Если вы уже знаете, что сво Ext.grid.GridPanel вы можете создать экземпляр нового одно:

var grid1 = new Ext.grid.GridPanel({ 
    id: 'grid1' 
}); 
+0

нет, потому что если он расширяет, он может установить id в конструкторе ПЕРЕД рендерингом ... – Nexum

+0

Он может установить идентификатор в конструкторе перед рендерингом, даже если он не расширил класс. Активация и рендеринг - это отдельные действия. Он спрашивал, как создать экземпляр с помощью Id, что невозможно, поэтому я экстраполировал наиболее вероятный фактический смысл его вопроса. –

Смежные вопросы