Проблема с регистрацией xtype - PullRequest
0 голосов
/ 27 июня 2011

Я пытаюсь создать фабричные функции согласно factory-functions-in-ext-extensions , ниже мой код

Ext.ns('MyApp');

MyApp.SubmitButton = Ext.extend(Ext.Button, {
     text:'Submit'
    ,iconCls:'icon-disk'
    ,initComponent:function() {
        MyApp.SubmitButton.superclass.initComponent.apply(this, arguments);
    } // eo function initComponent
}); // eo extend



var btn = new MyApp.SubmitButton();
Ext.reg('submitbutton1',btn);//this is not working

Ext.reg('submitbutton', MyApp.SubmitButton );//this works

var win1;
if(!win1) {
        win1 = new Ext.Window({
            title       : 'title',
            closeAction : 'hide',
            autoHeight  : true,
            autoWidth   : true,
            height      :  300,
            width       : 500,
            items       : [{xtype:'submitbutton1',id:'submitbutton'}]
        });
    }
win1.show();

когда я запускаю это, он выдает ошибку "b [d.xtype || e] не является конструктором"

1 Ответ

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

Вы не можете использовать экземпляр класса для регистрации xtype.Вы должны использовать имя класса для этого.Ext не отслеживает создаваемые вами экземпляры, а просто регистрирует пользовательский класс компонентов - так что вы можете просто использовать этот способ:

var button = new MyApp.SubmitButton({
         id : 'submitbutton'
    });

ИЛИ,

{
     xtype : 'submitbutton',
     id:'submitbutton'
}

Оба одинаковы.Проверьте Saki's эту статью для получения дополнительной информации.

...