【发布时间】:2013-08-22 14:25:43
【问题描述】:
我想在组合框发生更改时更新组合框存储并显示此更改的存储。我的商店正在加载,但组合框不会显示它。我可以像我想显示的那样显示本地存储,但不能对远程 json 存储执行相同的操作。
我有一个像这样的“ProcessController”:
onComboboxChange: function(combo, newValue, oldValue) {
var upContainer = combo.up('container');
if(combo.itemId == "cmbServiceList") {
MyApp.app.globals.cmbServiceStore = this.createServiceCmbStore(upContainer.getComponent('cmbServiceList').getRawValue());
}
},
createServiceCmbStore: function(inputData){
var data = {"inputData": inputData};
var mainController = MyApp.app.getController('MainController');
var cmbServiceData = mainController.callService(data,'getServices','json');
var classServices = Ext.JSON.decode(cmbServiceData);
var projectStore = Ext.create('Ext.data.Store', {
fields: ['key', 'text'],
data: classServices
});
return projectStore;
}
init: function(application) {
this.control({
'combobox': {
change: this.onComboboxChange
}
});
_myAppGlobal = this;
},
这是我在主视口中的组合框:
{
xtype : 'combobox',
anchor : '80%',
listConfig : {
loadingText : 'Searching...',
emptyText : 'No matching posts found.'
},
typeAhead : true,
itemId : 'cmbServiceList',
fieldLabel : 'Servis Adı:',
hideTrigger : true,
displayField : 'text',
store : MyApp.app.globals.cmbServiceStore,
valueField : 'key',
minChars : 1,
queryMode : 'local',
forceSelection: true
}
MyApp.app.globals.cmbServiceStore是app.js中定义的全局变量
当我调试代码时,我可以看到商店已加载,但它不会在组合框中显示任何存储的值。
【问题讨论】:
-
if(combo.itemId == "cmbServiceList") { MyApp.app.globals.cmbServiceStore = this.createServiceCmbStore(upContainer.getComponent('cmbServiceList').getRawValue()); upContainer.getComponent('cmbServiceList').bindStore(MyApp.app.globals.cmbServiceStore); } 而不是 if(combo.itemId == "cmbServiceList") { MyApp.app.globals.cmbServiceStore = this.createServiceCmbStore(upContainer.getComponent('cmbServiceList').getRawValue()); } 解决了这个问题。
-
将其发布为答案 :) 它不可读,实际上是一个答案,也许它可以帮助其他有类似问题的人
-
抱歉,我试过了,但网站显示“您无法在 8 小时内回答您自己的问题”
标签: javascript json extjs extjs4