0

下面的代码描述了这个问题:

var store = Ext.create('Ext.data.Store', {
                      fields: ['Name'],
                      data: [                        
                       {
                          Name: 'Java'
                       },
                       {
                          Name: 'C'
                       },
                       {
                          Name: 'Android'
                       }
                      ]
                     });
    store.insert(0, [Ext.create(store.model, {
           Name: ''
        })]);

    Ext.create('widget.combobox', {
            renderTo: Ext.getBody(),
            margin: '10',
            width: 500,
            store: store,
            displayField: 'Name',
            valueField: 'Name',
            queryMode: 'local'
            listeners: {
                 beforeselect: function (cbo, rec, idx) {                                                                                    
                      console.log(idx);               
                 }
            }
          });

使用“插入”方法插入存储的新数据在组合框中没有索引。每次单击空白记录时,我都会看到 idx 的日志是“未定义”。我的期望是'0'。我该如何解决这个问题?

4

1 回答 1

1

很好的发现,这很可能是分机中的一个错误。(未记录的)记录索引设置在loadDataloadRawData函数中,并且不使用插入的记录进行更新。

不要依赖这个有问题的实现并通过使用计算的存储索引来解决它:

beforeselect: function (cbo, rec) {
    var idx = cbo.getStore().indexOf(rec);
    console.log(idx);
}
于 2013-08-06T14:28:26.783 回答