我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