У меня есть простая ExtJS 4 (форма xtype) внутри окна.Имеет два поля и кнопку сохранения.Одним из полей является строка.Это отлично работает.Если оно пустое, getValues () дает мне поле пустым.Если он установлен, я получаю значение.Однако флажок отличается.Если это проверено, я получаю значение «1».ОДНАКО, если я снимаю флажок (или не отмечаю его), я не получаю никакого значения - поле не отображается в результате getValues ()!ПОЧЕМУ ??
items: [
{
xtype: 'checkbox',
name : 'insuranceVerified',
fieldLabel: 'insuranceVerified',
inputValue:'1',
value:'1' //does not make a difference
},
{
xtype: 'textfield',
name : 'ru',
fieldLabel: 'ru'
}
]
Я ловлю событие нажатия кнопки сохранения и вызываю эту функцию в моем контроллере:
updateEncounter: function(button) {
console.log('clicked the Save button');
var win = button.up('window'),
form = win.down('form'),
record = form.getRecord(),
values = form.getValues();
// values properly shows the ru field on the form, but only shows insuranceVerified if it's checked - is not in values if it's unchecked... ??!
debugger;
record.set(values);
this.getEncountersStore().sync();
win.close();
}
Я только что понял что-то еще, хотя это не полный ответдля меня: если я изменю код выше, чтобы он получил форму (я предполагаю, из панели формы):
form = win.down('form').getForm(), // instead of win.down('form')
Затем, используйте getFieldValues () для этого нового объекта вместо getValues (), ятеперь установите флажок, даже если он не отмечен.
values = form.getFieldValues(); // instead of getValues()
ОДНАКО, возвращаемое мной значение равно «ложь» (или истина), а не «0» или «1», как я указал с помощьюinputValue: '1'.
Кроме того, я даже попытался установить 'значение' для поля '1', без разницы, делаю я это или нет для getValues или getFieldValues ().