ExtJS - 组合框中记录的未定义索引

时间:2013-08-06 04:48:16

标签: javascript extjs

以下代码描述了问题:

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);               
                 }
            }
          });

使用'insert'方法插入到商店的新数据在组合框中没有索引。每次我点击空白记录,我都会看到idx的日志是'undefined'。我的期望是'0'。我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

不要依赖这个错误的实现,并使用计算的商店索引解决它:

beforeselect: function (cbo, rec) {
    var idx = cbo.getStore().indexOf(rec);
    console.log(idx);
}