我的viewmodel设置单选按钮组的选定项目时遇到一些问题。是否可以通过元素名称设置所选值?我希望hat viewmodel gender = true匹配第二个(' female')单选按钮。
Ext.application({
launch: function () {
var form = Ext.widget('form', {
renderTo: Ext.getBody(),
viewModel: {
data: {
gender: true
}
},
items: [{
xtype: 'radiogroup',
fieldLabel: 'Gender',
name: 'rbGender',
defaults: {
flex: 1
},
layout: 'hbox',
items: [{
boxLabel: 'Male',
name: 'gender',
inputValue: false,
id: 'radio1'
}, {
boxLabel: 'Female',
name: 'gender',
inputValue: true,
id: 'radio2'
}]
}]
});
}
});
答案 0 :(得分:3)
不,这对于viewModel是不可能的。 viewModel始终依赖于bind
配置,例如
bind:' {gender}',
你不想绑定无线电控制,你想绑定无线电组。您还想要做的是将radiogroup
设置为simpleValue: true
。
工作示例:
viewModel: {
data: {
gender: false
}
},
items: [{
xtype: 'radiogroup',
fieldLabel: 'Gender',
name: 'rbGender',
bind: '{gender}', // <- bind this field to the viewModel's "gender" value.
simpleValue: true, // <- use a boolean, not an object.
defaults: {
flex: 1
},
...
如果你想做#34;老派&#34;使用name
的方式,您必须使用form.setValues()
和form.getValues()
而不是viewModel。
在ExtJS 5.x中,simpleValue
不可用且defaultBindProperty
为空,因此您必须更改:
viewModel: {
data: {
gender: { // In ExtJS 5, radiogroups can only take objects, not simple values
rbGender: false
}
}
},
items: [{
xtype: 'radiogroup',
fieldLabel: 'Gender',
name: 'rbGender',
bind: { // bind has to be a complex object, because defaultBindProperty is not available.
value:'{gender}'
},
items: [{
boxLabel: 'Male',
name: 'rbGender', // <- tell the radiogroup to put the rbGender property into these checkboxes