ExtJS 3 — Как мне добавить свойство к существующему элементу в items?

#extjs3

#extjs3

Вопрос:

Мне нужно добавить свойство к существующему элементу FormPanel. код:

 Application.TypesForm = Ext.extend(Ext.form.FormPanel, {
initComponent : function() {

    Ext.apply(this, {
        defaultType : 'textfield',
        items : [
            {
                fieldLabel : 'Id',
                typeAhead   : true,
                name        : 'id', 
                hiddenName  : 'id',
                hiddenValue : 'id',
                valueField  : 'id',
                readOnly    : true, 
                cls         : 'disabled_field'
            }
            ,{
                xtype    : 'ProductsVerticalsComboBox',
                id       : 'add_vertical_id',
                editable : false
                //readOnly : true, cls : 'disabled_field'
            }
  

В режиме редактирования вам необходимо зарегистрировать add_vertical_id — свойство только для чтения и cls. А в режиме добавления — они не нужны.
Я делаю так:

 Ext.apply(Ext.getCmp('add_vertical_id'), {readOnly : true, cls : 'disabled_field'});
  

Но не работает. Что я делаю не так??

Ответ №1:

решено

     items : [
{
    fieldLabel : 'Id',
    typeAhead   : true,
    name        : 'id', 
    hiddenName  : 'id',
    hiddenValue : 'id',
    valueField  : 'id',
    readOnly    : true, 
    cls         : 'disabled_field',
    // Disabled Vertical combobox when id is not empty.
    listeners: {
        render: function() {
            if (this.value) {
                Ext.apply(Ext.getCmp('add_vertical_id'), {
                    readOnly : true, 
                    cls      : 'disabled_field'
                });
            }
        }
    }
}
,{
    xtype    : 'ProductsVerticalsComboBox',
    id       : 'add_vertical_id',
    editable : false
}