在extjs中动态加载存储上的数据
我有两个组合框 在第一个组合框中选择第一个字段时,必须显示一些存储元素,对于下一个字段,必须显示一些其他存储元素。为此,我在这里创建了两个不同的存储并绑定它们。但是现在我觉得这不是一个好的实践,因为Store1包含Store2的元素 是否有任何方法只在选择第一个组合框的字段时显示一个存储选择数据在extjs中动态加载存储上的数据,extjs,data-binding,combobox,Extjs,Data Binding,Combobox,我有两个组合框 在第一个组合框中选择第一个字段时,必须显示一些存储元素,对于下一个字段,必须显示一些其他存储元素。为此,我在这里创建了两个不同的存储并绑定它们。但是现在我觉得这不是一个好的实践,因为Store1包含Store2的元素 是否有任何方法只在选择第一个组合框的字段时显示一个存储选择数据 { xtype: 'combobox', fieldLabel: 'Type', store: 'hsg' listeners: { cha
{
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',
}
在
change
事件侦听器中,您可以使用Ext.data.Store.filter
方法筛选组合框的存储:
为此,您需要在数据源上实现过滤逻辑。Store1.filter('name','StoreA');仅使用一个数据进行筛选。如果我需要将StoreB的数据加载到存储中怎么办???@Shiromi Filter将向您的数据源发送请求。如何处理过滤器参数取决于您的实现。