如何根据 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 XML 对 JSON 的响应

Sencha Touch Nestedlist JSON 格式示例

如何在 sencha 中调用 Web 服务并解析 json?

无法在网格视图中显示存储中的 Json 数据(使用 Sencha 框架)

WCF 如何根据请求决定何时返回 SOAP 或 JSON?

在 Sencha Touch 2 中使用不同的代理存储动态定义和加载视图