我有一个组合框,其值需要通过我通过AJAX调用检索的json格式化字符串填充。
这是我检索过的字符串(存储在data
)
{
"a2m":
[
"a2mMeeting",
"sugar"
]
}
组合框必须包含a2m
(这是截至目前字符串中唯一的名称)
这是我一直在尝试的事情:
方法1:
this.initAjaxCall = Ext.Ajax.request({
url : 'indigo/restproxy/get/v1/applications/list',
method:'GET',
scope : this,
success : function(result, request) {
var data = Ext.decode(result.responseText);
Object.keys(data).forEach(function(key) {
console.log(key);
Ext.getCmp('appCombo').getStore().add({appName : key});
})
}
});
this.appcombo = Ext.create('Ext.form.field.ComboBox', {
id : 'appCombo',
store: this.appStore
});
this.appStore = Ext.create('Ext.data.Store', {
fields : [
{
name : 'appName',
type : 'string'
}
]
});
方法2:
this.appStore = Ext.create('Ext.data.Store', {
fields: ['appName'],
proxy: {
type: 'ajax',
url: 'indigo/restproxy/get/v1/applications/list',
method : 'GET'
},
listeners: {
load: function(store, records, successful, eOpts ) {
store.insert(0, {
'appName' : 'yellow' //Trying to populate randomly using this method.
})
}
}
})
this.appcombo = Ext.create('Ext.form.field.ComboBox', {
id : 'appCombo',
store: this.appStore
});
在这两种情况下,组合框都没有加载任何值,我无法在下拉菜单中看到任何值。
编辑1:当我在添加一个元素后在控制台中打印store.getCount()时,该值显示为1(通过添加两个元素进行检查,它显示为2)。这意味着值正在添加到商店但未显示在组合框下拉菜单中。请建议如何解决此问题。
SOLUTION:
事实证明,解决方案是添加一个语句queryMode:' local'。我不明白为什么这会造成问题。任何愿意阐明这一点的人都欢迎这样做。
答案 0 :(得分:-1)
正如您所证明的那样,商店正在填充。但是,您尚未在组合框上设置显示字段。
this.appcombo = Ext.create('Ext.form.field.ComboBox', {
id : 'appCombo',
store: this.appStore,
displayField: 'appName'
});
displayField:要绑定到此ComboBox的基础数据字段名称。默认为:'text'
valueField:要绑定到此ComboBox的基础数据值名称。默认值与displayField config的值匹配。