Как добавить конфигурацию поля на лету?

Я хочу добавить конфигурацию Blanks, когда я нажимаю на узел в моей панели дерева! если node является листом, я хочу поместить конфигурацию поля имени: allowBlank: false, а если не лист, allowBlank: true. Я не нахожу способ сделать это?!

Большое спасибо :)


Благодаря вашему ответу, но мой список не является глобальной переменной:

var monPrepanel = Ext.create('Ext.form.Panel',{

        frame : true,
        title : 'Editing Zone',
        //renderTo : 'mesfields',
        //width : 750,
        forceFit : true,

        items: [{

                xtype:'fieldset',
                title: 'Add Task : ',
                margin : '20 20 20 20',

                collapsible: true,
                defaultType: 'textfield',
                defaults: {anchor: '100%'},
                layout: 'anchor',
                items: [ {

                itemId : 'p0',
                allowBlank : false,


         xtype : 'textfield',
    anchor : '60%',

         padding : '0 30 0 30',
          fieldLabel : 'Task',

          name : 'task'
        } , {

                itemId : 'p1',
                allowBlank : false,


         xtype : 'combobox',
            anchor : '40%',
            store : materialstore,
            queryMode: 'local',
            displayField: 'data',
            width : 50,
            valueField: 'data',
            editable : false,

         padding : '0 30 0 30',
          fieldLabel : 'Material',

          name : 'material'
        } , {

                allowBlank : true,

         xtype : 'combobox',
            anchor : '40%',
            store : ccstore,
            queryMode: 'local',
            displayField: 'data',
            width : 50,
            valueField: 'data',
            editable : false,

         padding : '0 30 0 30',
          fieldLabel : 'CC',

          name : 'cc'
        }

Мне нужно получить доступ к компоненту со списком по идентификатору, может быть? Есть ли решения для доступа к этому компоненту в пунктах к пунктам?


person Vincent Guesné    schedule 23.05.2011    source источник


Ответы (2)


Установите свойство id для нужного поля со списком (id: 'anyId') и используйте Ext.apply(Ext.getCmp('anyId'), {your config object});

person Giku Promitt    schedule 24.05.2011
comment
как получить существующую конфигурацию, не могли бы вы заменить {your config object} существующей конфигурацией - person Amol Pujari; 08.08.2017

В общем, именно так вы «применяете» изменения к уже созданному вами компоненту Ext.

var combo = new Ext.form.ComboBox({some initial config});

Ext.apply(combo, {your config object});

Как вы загружаете свои Treenodes? Вы, вероятно, добьетесь большего успеха, добавив эти свойства из серверной части, если они оттуда исходят.

person It Grunt    schedule 23.05.2011
comment
Спасибо за ваш ответ, но мой список не является глобальной переменной - person Vincent Guesné; 24.05.2011
comment
Это не должно быть. Если вы знаете свой идентификатор DOM, вы можете получить ссылку на него, используя Ext.getCmp('myDomID'); - person It Grunt; 24.05.2011
comment
Применяется ли этот метод также для тех конфигураций, которые изменяют макет компонента. Например, сворачиваемому свойству Ext.form.FieldSet присваивается значение true после его визуализации. В моем случае макет не обновляется: Ext.apply(fieldset,{collapsible:true, style: background:red}); - person asim-ishaq; 08.09.2013
comment
Это обновляет конфигурацию объекта. Однако вам может понадобиться вызвать doLayout() для контейнера, в котором находится компонент. - person It Grunt; 16.09.2013