如何根据 sencha 中 json 响应的第一个组合值填充第二个组合
Posted
技术标签:
【中文标题】如何根据 sencha 中 json 响应的第一个组合值填充第二个组合【英文标题】:How to populate second combo depending on first combo value from json response in sencha 【发布时间】:2013-03-13 14:23:52 【问题描述】:我正在尝试根据来自 json 响应的第一个组合填充第二个组合,例如使用第一个组合中的类别值在第二个组合中显示子类别值。我所有的值都来自 json 数组响应,我试图动态设置 root 属性并在第一个组合更改函数中加载控制器中第二个组合框的存储,但它没有填充数据。谁能告诉我问题是什么。我如何解决它?我已经在下面发布了第一个组合的更改功能的代码:
valueChange:function(combo, ewVal, oldVal,optionsVal)
for(var i=0;i<tempstore.getCount();i++)
var record = tempstore.getAt(i);
//checking for user selection id with store id
if(record.get('categoryId')==ewVal)
value="category.category1.category["+i+"].subCategory.subCategory1";
tempsecondCompostore.getProxy().getReader().setRootProperty(value);
tempsecondCompostore.load();
cmbSecond.setStore(tempsecondCompostore);
mdSecond.setDisplayField('subCategoryName');
cmdSecond.setValueField('subCategoryId');
break;
这是我的第二个组合模型:
Ext.define('Test.model.SubCategoryModel',
extend : 'Ext.data.Model',
fields : [
name:'subCategoryName',
type:'string'
,
name:'subCategoryId',
type:'string'
]
);
这是我的第二家 Combo 商店:
Ext.define('Test.store.SubCategoryStore',
extend : 'Ext.data.Store',
storeId : 'secondcombo',
model : 'Test.model.SubCategoryModel',
//autoLoad : 'true',
proxy :
type : 'ajax',
url : 'data.json',
reader :
type : 'json',
rootProperty:'category.category1.category[0].subCategory.subCategory1
);
在视图中显示组合:
xtype: 'fieldset',
width:400,
heigth:200,
items: [
xtype: 'selectfield',
label: 'Select',
store : 'secondcombo',
width:400,
heigth:200,
queryMode: 'local',
displayField :'subCategoryName',
valueField :'subCategoryId',
id:'cmbSecond'
]
谢谢
【问题讨论】:
【参考方案1】:问题是 store 的 load() 是异步的,你需要在回调中包含这个调用之后的行。
【讨论】:
以上是关于如何根据 sencha 中 json 响应的第一个组合值填充第二个组合的主要内容,如果未能解决你的问题,请参考以下文章
Sencha Touch Nestedlist JSON 格式示例
如何在 sencha 中调用 Web 服务并解析 json?