在extjs中动态加载商店中的数据

时间:2018-03-29 09:54:53

标签: extjs data-binding combobox

我有两个组合框。

当在第一个组合框中选择第一个字段时,它必须显示一些商店元素,而对于下一个字段则显示一些其他商店元素。为此我在这里创建两个不同的商店并绑定它们。但是现在我觉得这不是一个好习惯,因为Store1包含了Store2的元素。

有没有办法只显示一个商店选择性数据,并选择第一个组合框的字段。

 {
     xtype: 'combobox',
     fieldLabel: 'Type',
     store: 'hsg'

     listeners: {
         change: function(combo, value) {
             var Store1 = Ext.create('Ext.data.Store', {
                 fields: ['id', 'name'],
                 data: [{
                         'id': 1,
                         'name': 'StoreA'
                     },
                     {
                         'id': 2,
                         'name': 'StoreB'
                     },
                     {
                         'id': 3,
                         'name': 'StoreC'
                     },
                     {
                         'id': 4,
                         'name': 'StoreD'
                     },
                     {
                         'id': 5,
                         'name': 'StoreF'
                     }
                 ]
             });

             var Store2 = Ext.create('Ext.data.Store', {
                 fields: ['id', 'name'],
                 data: [{
                         'id': 1,
                         'name': 'StoreA'
                     },
                     {
                         'id': 2,
                         'name': 'StoreB'
                     }
                 ]
             });
             if (2 == value)
                 combo.up().down('combobox[xscope="storeCombo"]').bindStore(Store1);
             else
                 combo.up().down('combobox[xscope="storeCombo"]').bindStore(Store2);
         }
     }
 }, {
     xtype: 'combobox',
     fieldLabel: 'Store',
     xscope: 'storeCombo',
     itemId: 'Store_Id',
     displayField: 'name',
     valueField: 'id',

 }

1 个答案:

答案 0 :(得分:2)

change事件监听器中,您可以使用Ext.data.Store.filter方法过滤组合框的商店:http://docs.sencha.com/extjs/6.5.3/classic/Ext.data.Store.html#method-filter

为此,您需要在数据源上实现过滤逻辑。