Регистрация ExtJS xtype

У меня возникли проблемы с регистрацией xtypes в ExtJS 3.3.1.

Мне нужно составное поле с двумя строковыми полями, но отображается только одно.

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

Ext.myApp.StringDouble = Ext.extend(Ext.form.CompositeField, {
    separator: '-',
    unitOptions: {},
    values: ['first', 'second'],
    bothRequired: false,

    init: function() {
        this.items = [];
        var unitConf = {
        };

        Ext.apply(unitConf, this.unitOptions);
        this.items.push(new Ext.form.TextField(Ext.apply({
            name: this.values[0] + '.' + this.name,         
            fieldLabel: this.fieldLabel + ' ' + this.values[0],
                value: this.value && this.value[this.values[0]]
        }, unitConf)));

        this.items.push(new Ext.form.DisplayField({
            value: this.separator
        }));

        this.items.push(new Ext.form.TextField(Ext.apply({
            name: this.values[1] + '.' + this.name,         
            fieldLabel: this.fieldLabel + ' ' + this.values[1],
            value: this.value && this.value[this.values[1]]
    }, unitConf)));

},

initComponent : function() {
    this.init();
    Ext.form.TextField.superclass.init.Component.call(this);
}

});

Ext.reg('stringdouble', Ext.myApp.StringDouble);

Спасибо.


person Zhack    schedule 20.03.2012    source источник


Ответы (1)


во-первых, я не понимаю, почему вам нужно создавать свой собственный компонент, когда передача конфигурации в композитное поле может обеспечить такое же поведение, как это

{
    xtype: 'compositefield',
    labelWidth: 120
    items: [
        {
            xtype     : 'textfield',
            fieldLabel: 'Title',
            width     : 20
        },
        {
            xtype     : 'textfield',
            fieldLabel: 'First',
            flex      : 1
        }
    ]
}

а также есть опечатка при вызове метода initComponent родительского класса

initComponent : function() {
    this.init();
    Ext.form.TextField.superclass.initComponent.call(this);
}
person Saket Patel    schedule 20.03.2012
comment
Эти компоненты служат шаблонами, которые можно изменять с помощью определений (изменить метку, единицу измерения, разделитель и т. д.). Они используются для чего-то вроде складского учета, когда многие предметы имеют схожие параметры. - person Zhack; 21.03.2012