Я заметил пару ошибок:
Компоненты флажка не могут быть напрямую указаны по их id
, хотя вы можете вызывать их с помощью Ext.getCmp ('id').
Ваш слушатель в приведенном выше примере подключен к панели инструментов, у которой нет события change
.Вместо этого вам нужно подключить его к радио.
На самом деле, если вы хотите, чтобы флажки включались только при заполнении «автономного» радио, то я бы рекомендовал добавить конфигурацию handler
к «автономному» радио сфункция для включения или выключения флажков в зависимости от того, на какое значение переключается это радио.Например, это работает:
dockedItems: [{
xtype: 'toolbar',
dock: 'top',
items: [{
xtype: 'radiofield',
id: 'all',
name: 'show',
boxLabel: 'All',
checked: true,
}, {
xtype: 'radiofield',
id: 'online',
name: 'show',
boxLabel: 'Online',
inputValue: 'online',
}, {
xtype: 'radiofield',
id: 'offline',
name: 'show',
boxLabel: 'Offline',
inputValue: 'offline',
handler: function(field, value) {
if (value) {
Ext.getCmp('cb1').enable();
Ext.getCmp('cb2').enable();
} else {
Ext.getCmp('cb1').disable();
Ext.getCmp('cb2').disable();
}
}
}, {
xtype: 'checkboxfield',
id: 'cb1',
boxLabel: 'Sometimes',
checked: true,
inputValue: 'sometimes',
disabled: true
}, {
xtype: 'checkboxfield',
id: 'cb2',
boxLabel: 'Always',
checked: true,
inputValue: 'always',
disabled: true
}]
}],
Я предлагаю использовать конфигурацию handler
(как указано выше) и не иметь прослушивателя для события change
.
Если вы добавите прослушиватель change
, он переопределит обработчик по умолчанию change
, используемый ExtJS внутри для отмены выбора других полей радио в той же группе имен.Например, с помощью прослушивателя change
на радио «офлайн», когда вы выберете его, «все» останется выбранным.
Другими словами ... просто скопируйте приведенный выше пример, и все будет хорошо.