Проблема с регистрацией xtype

Я пытаюсь создать фабричные функции в соответствии с 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] не является конструктором»


person MMT    schedule 27.06.2011    source источник


Ответы (1)


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

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

OR,

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

Оба одинаковы. Дополнительную информацию можно найти в этой статье Саки.

person Swar    schedule 27.06.2011