【发布时间】:2015-08-03 00:22:23
【问题描述】:
我有一个组合框,我需要通过我通过 AJAX 调用检索的 json 格式字符串填充其值。
这是我检索到的字符串(存储在data)
{
"a2m":
[
"a2mMeeting",
"sugar"
]
}
组合框必须包含a2m(这是目前字符串中唯一的名称)
这是我一直在尝试的:
方法一:
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)。这意味着这些值正在添加到存储中,但未显示在组合框下拉菜单中。请建议如何解决此问题。
解决方案:
事实证明,解决方案是添加语句 queryMode : 'local'。我不明白为什么这会造成问题。欢迎任何愿意阐明这一点的人这样做。
【问题讨论】:
标签: extjs dynamic combobox add store