Я использую radiogroup
в своей форме и заметил, что когда я выбираю один из переключателей, значение (связанное значение) не обновляется.
Вот небольшой пример:
Ext.create({
xtype: 'container',
renderTo: Ext.getBody(),
items: [{
xtype: 'formpanel',
viewModel: {
data: {
myValue: 3
}
},
items: [{
xtype: 'displayfield',
label: 'This is the value of myValue:',
bind: '{myValue}'
}, {
xtype: 'textfield',
label: 'Update myValue:',
bind: '{myValue}'
}, {
xtype: 'radiogroup',
vertical: true,
label: 'Click a radio button:',
bind: '{myValue}',
items: [{
label: 'One',
value: 1
}, {
label: 'Two',
value: 2
}, {
label: 'Three',
value: 3
}, ]
}]
}]
});
Я создал простой viewModel
с одним значением данных: myValue: 3
. Это связано со всеми элементами формы: radiogroup
, textfield
и displayfield
.
Я ожидал, что когда я нажму одну из переключателей, displayfield
обновит свое значение. Значение displayfield
обновляется, когда вы вводите textfield
, но radiogroup
не обновляется.
Кажется, что radiogroup
использует только свое связанное значение при инициализации, но не замечает, когда он обновляется, и не обновляет его самостоятельно.
Что я делаю неправильно? Почему связанное значение не обновляется, когда я нажимаю переключатель?
Вот пример на Sencha Fiddle: https://fiddle.sencha.com/#view/editor&fiddle/389i
ОБНОВЛЕНИЕ: я нашел решение, добавляющее change
слушателя к radiogroup
. Что ж, это исправляет обновление myValue
, когда вы нажимаете переключатель. Мне нужен другой слушатель для обновления radiogroup
, когда myValue
обновляется где-то в другом месте (например, в textfield
).
Это работает для моих нужд, но зачем мне добавлять слушателя change
? Почему radiogroup
не привязывается к {myValue}
правильно?
listeners: {
change: function(field, val) {
let vm = field.lookupViewModel();
vm.set('myValue', val);
}
}
Вот скрипка с примененным этим обновлением: https://fiddle.sencha.com/#view/editor&fiddle/389k