ExtJS如何在控制器中设置extraParam传递给Store实现下拉框条件加载
ExtJS动态设置Store extraParam实现下拉框条件加载方案
核心实现逻辑
你只需要在加载数据的函数中先根据业务条件判断groupId的取值,再赋值给extraParam即可,同时注意你原有代码存在变量名拼写错误(定义时是extraParam,调用setExtraParams时写成了extraParams),修正后的完整实现如下:
修正后的控制器加载函数代码
loadabcData: function(newValue) { var me = this, view = me.getView(), viewModel = this.getViewModel(), store = viewModel.getStore('abcStore'), // 声明groupId变量 groupId; // 这里替换为你实际的条件1判断逻辑,比如newValue === '指定值'之类的业务判断 if (/* 条件1判断表达式 */) { groupId = 'abc.1'; } else if (/* 条件2判断表达式 */) { groupId = 'abc.2'; } // 可补充兜底默认值逻辑,避免参数为空 var extraParams = {groupId: groupId}; store.getProxy().setExtraParams(extraParams); store.load(); }
可选优化方案
如果你的条件判断逻辑需要在多处复用,可以把groupId的判断抽成独立的工具方法,避免重复代码:
- 新增公共方法获取groupId:
getGroupIdByCondition: function(conditionParam) { if (/* 条件1判断 */) return 'abc.1'; if (/* 条件2判断 */) return 'abc.2'; return 'abc.default'; // 自定义兜底值 }
- 在
loadabcData中直接调用即可:
var groupId = me.getGroupIdByCondition(newValue);
内容的提问来源于stack exchange,提问作者Aakash Singh
相关产品推荐
相关产品推荐

