ExtJS 3.2.1 Регистрация компонента для использования с xtype - PullRequest
1 голос
/ 13 июня 2011

В одном файле я создаю панель вкладок с двумя вкладками. Я пытаюсь зарегистрировать компонент для использования в отдельном файле. Учтите следующее:

Ext.ns('DVI');

var backtestTab = {
    xtype: 'groupingstore'
}

var intradayTab = {
    xtype: 'groupingstore'
}

DVI.DviDashboard = new Ext.TabPanel({
    activeTab: 0,
    items: [backtestTab, intradayTab]
});

Ext.reg('dviDashboard', DVI.DviDashboard);

Предположим, что эта страница правильно заполняет вкладки хранилищами групп. На странице, которая вызывает этот скрипт, код выглядит следующим образом:

var dashboard = {
    xtype: 'tabpanel',
    id: 'port_dash-panel',
    activeTab: 0,
    items:[{
        title: 'Dashboard',
        xtype: 'dviDashboard'
    }]
 };

, который возвращает следующую ошибку:

b[d.xtype || e] is not a constructor

При исследовании вышеуказанная ошибка означает, что компонент не может быть найден или не определен.

Обратите внимание, что приведенный ниже код работает и отображает панель табуляции:

var dashboard = {
    xtype: 'tabpanel',
    id: 'port_dash-panel',
    activeTab: 0,
    items:[DVI.DviDashboard]
 };

Я показываю только фрагменты. Панель вкладок панели инструментов отображается в области просмотра.

Наверное, первый вопрос: могу ли я зарегистрировать компонент таким образом? И, конечно, второй вопрос: почему это не работает? :)

1 Ответ

2 голосов
/ 13 июня 2011

Вы пытаетесь зарегистрировать экземпляр объекта, который не будет работать.Ext.reg обычно принимает компоненты, созданные методом Ext.extend.

DVI.DviDashboard = Ext.extend(Ext.TabPanel,{
    initComponent: function(){

    Ext.apply(this, {
        activeTab: 0,
        items: [backtestTab, intradayTab]
    });

    DVI.DviDashboard.superclass.initComponent.call(this)   
}
});

Ext.reg('dviDashboard', DVI.DviDashboard);

Вот старая, но полезная ссылка о написании классов в Ext 3. *: http://blog.extjs.eu/know-how/writing-a-big-application-in-ext/

...