在我的extjs 4应用程序中,我使用这样的extjs组合,这个组合有三个值select,yes或no。默认情况下,我必须将组合值设置为“select”。如果他没有选择是或否,我还需要提醒用户。
因为我已经编写了这样的代码。但它没有用。
xtype: 'combo',
itemId:'comboOfficial',
id:'comboOfficial',
autoSelect:true,
width:50,
queryMode: 'local',
store: new Ext.data.ArrayStore({
id: 0,
fields: ['value', 'text'],
data: [[1, 'Select'],[2, 'Yes'], [3, 'No']] // data is local
}),
listeners: {
'select': function (combo, records, eOpts) {
var recordSelected = combo.getStore().getAt(0);
alert(recordSelected);
if(recordSelected == 1){
alert("Please choose either 'Yes' or 'No'");
}
}
},
valueField: 'value',
displayField: 'text',
value: 1
答案 0 :(得分:0)
你有两个问题:
您实际上并未将所选记录分配给recordSelected
变量。您总是从商店中检索第一行。你需要替换
var recordSelected = combo.getStore().getAt(0);
与
var recordSelected = records[0]; //since you don't allow multiselect,
//records will always be an array
//of length 1.
您不能只检查是否recordSelected == 1
,因为recordSelect是一个ExtJS对象,以模型指定的格式存储一些数据(根据您提供给商店的字段创建。)想检查是记录的value
,可以通过替换
if (recordSelected == 1) {
与
if (recordSelected.get('value') === 1) {
一旦你修复了这两件事,你的代码应该按照你的预期工作。