Так что вы все равно хотите использовать свой необычный JSON.В этом случае вы можете решить свою проблему, определив свой собственный читатель.Как это:
Ext.define('MA.reader.Language', {
extend: 'Ext.data.reader.Json',
alias: 'reader.Language',
read: function (response) {
var data = [];
for (var i in response[0])
data.push({
id: i,
'name': response[0][i]
});
return this.callParent([data]);
}
});
Ext.define('MA.store.Language', {
extend: 'Ext.data.Store',
fields: [{
name: 'id'
}, {
name: 'name'
}],
data: [{
"aa": "Afar",
"ab": "Abkhazian",
"ace": "Achinese",
"ach": "Acoli",
"ada": "Adangme",
"ady": "Adyghe",
"ae": "Avestan",
"af": "Afrikaans",
"afa": "Afro-Asiatic Language",
"afh": "Afrihili",
"ain": "Ainu",
"ak": "Akan"
}],
proxy: {
type: 'memory',
reader: {
type: 'Language'
}
}
});
var store = Ext.create('MA.store.Language', {
storeId: 'Language'
});
var cc = Ext.widget('combo', {
xtype: 'combo',
name: 'language',
fieldLabel: 'Language',
store: 'Language',
queryMode: 'local',
displayField: 'name',
valueField: 'id',
typeAhead: true,
forceSelection: true
});
cc.render(Ext.getBody());
РЕДАКТИРОВАТЬ: рабочий пример