0

在我的 extjs 4 应用程序中,我正在使用这样的 extjs 组合,这个组合具有三个值选择,是或否。默认情况下,我必须将组合值设置为“选择”。如果他没有选择是或否,我还需要提醒用户。

为此,我编写了这样的代码。但它不工作。

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
4

1 回答 1

0

你有两个问题:

  1. 您实际上并没有将选定的记录分配给您的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.
    
  2. 您不能只检查是否recordSelected == 1因为 recordSelect 是一个 ExtJS 对象,它以模型指定的格式存储一些数据(它是根据您提供给商店的字段创建的。您要检查的是value记录的,它可以通过更换来完成

    if (recordSelected == 1) {
    

    if (recordSelected.get('value') === 1) {
    

一旦你修复了这两个问题,你的代码应该可以按照你的预期工作。

于 2013-08-11T21:34:51.587 回答