以下代码描述了问题:
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'。我怎么能解决这个问题?
答案 0 :(得分:1)
很好的发现,这很可能是Ext中的一个错误。 (未记录的)记录索引在loadData
和loadRawData
函数中设置,并且不会使用插入的记录进行更新。
不要依赖这个错误的实现,并使用计算的商店索引解决它:
beforeselect: function (cbo, rec) {
var idx = cbo.getStore().indexOf(rec);
console.log(idx);
}