我radiogroup在我的表单中使用 a ,我注意到当我选择一个单选按钮时,值(绑定值)没有更新。
这是一个小例子:
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. 这绑定到所有表单元素: the radiogroup、 atextfield和 a 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