我的依赖组合框中的loadData()函数有问题。 我正在办公桌,我可以创建快捷方式并修改它们。
尝试修改快捷方式并将“Tab con URL”传递给“Tab con Info de sistema”时,会出现问题。 当我选择id =“sistemas”的组合时,检测loadData函数中的错误。没有数据加载使我在商店中使用GetMenu功能。 返回GetMenu函数的数据未加载到商店。
我不知道为什么。这是我的代码,有人可以帮我一把吗?
商店:
var cmb_menu = new Ext.data.SimpleStore({
fields : ['id', 'menu'],
data : menu
});
代码:
{
xtype : "radio",
boxLabel : "Tab con Info de sistema",
value : "oneway",
tabIndex : 1,
id :'IdCheck',
name : "rt_rt_radiobutton",
listeners: {
check: function(){
Ext.getCmp("sistemas").enable();
Ext.getCmp("iconUrl").disable();
}
}
},
{
xtype:"radio",
boxLabel:"Tab con URL",
value:"twoway",
id: 'idCheckedUrl',
tabIndex:1,
name:"rt_rt_radiobutton",
listeners: {
check: function (ctl, val) {
if(val){
Ext.getCmp("iconUrl").enable();
Ext.getCmp("sistemas").disable();
Ext.getCmp("sistemas").clearValue();
Ext.getCmp("menus").clearValue();
Ext.getCmp("items").clearValue();
Ext.getCmp("subMenu").clearValue();
Ext.getCmp("menus").disable();
Ext.getCmp("items").disable();
Ext.getCmp("subMenu").disable();
}
}
}
},
{
xtype : 'combo',
store : cmb_sistemas,
hiddenName : 'id_sistema',
allowBlank : false,
value : sistemId,
mode : 'local',
fieldLabel : 'Sistemas',
disabled : true,
name : 'sistemas',
id : 'sistemas',
anchor : '90%',
displayField : 'sistema',
triggerAction: 'all', //rdiaz
emptyText : 'Seleccione un sistema',//rdiaz
editable : false, //rdiaz
valueField : 'id',
listeners : {
select: function (){
idSistema = this.getValue();
nombreSistema= this.getRawValue();
var menu = Ext.getCmp("menus");
iMenu = getMenu(idSistema);
//menu.store.clear();
menu.store.loadData(iMenu, true);
menu.enable();
var items = Ext.getCmp("items");
//menu.clearValue();
//menu.store.removeAll();//rdiaz
items.clearValue();
items.disable();
var subMenues= Ext.getCmp("subMenu");
subMenues.clearValue();
subMenues.disable();
}
}
},
{
xtype : 'combo',
store : cmb_menu,
hiddenName : 'id',
valueField : 'id',
value : menuID,
mode : 'local',
allowBlank : false,
fieldLabel : 'menu',
disabled : true,
triggerAction: 'all',//rdiaz
emptyText : 'Seleccione un menu',//rdiaz
editable : false, //rdiaz
name : 'menus',
id : 'menus',
anchor : '90%',
displayField : 'menu',
listeners : {
select: function () {
selectedMenu = this.getValue();
Ext.getCmp("subMenu").clearValue();
//alert(selectedMenu);
idSistema = Ext.getCmp("sistemas").getValue();
mItems = getItemsMenu(selectedMenu, idSistema);
if($.trim(selectedMenu) == "000060000000010000"){
var subMenues= Ext.getCmp("subMenu");
subMenues.store.loadData(mItems);
subMenues.enable();
var items = Ext.getCmp("items");
items.clearValue();
items.enable();
}else{
var subMenues= Ext.getCmp("subMenu");
subMenues.store.loadData(mItems);
subMenues.disable();
var items = Ext.getCmp("items");
//alert(mItems);
items.store.loadData(mItems);
items.clearValue();
items.enable();
}
}
}
},
谢谢!
答案 0 :(得分:0)
存储加载方法是异步的意味着loadData之后的代码会立即执行但数据尚未加载。 您需要在loadData的回调中执行其余逻辑,或者在load事件侦听器中单独执行。