如何动态更改 Ext js 存储数据

How to change Ext js store data dynamically

我有一个如下所示的组合框

{
  xtype:'combo',
  fieldLabel:'Test',
  store:['a','b']
}

在没有创建 Ext 存储对象的情况下,我正在分配要存储的数组,它显示的值很好。

在某些操作中,我想用 ['d'、'e']

更新商店

我试过像下面这样分配新值来存​​储

comboObje.store=['d','e'];

但它没有更新值。

如何用商店中的新值替换原始值。

在版本 5.* 和更高版本中,您可以使用:

comboObje.setStore(['d','e']);

这在以前的版本中不起作用。

将以下代码粘贴到 Sencha Fiddle 作为 'proof-of-concept':

Ext.application({
    name : 'Fiddle',

    launch : function() {
        var panel = Ext.create('Ext.form.Panel', {
            title: 'test',
            items: [{
                xtype:'combo',
                fieldLabel:'Test',
                store:['a','b']
            }],
            renderTo: Ext.getBody()
        });

        panel.down('combo').setStore(['d','e']);
    }
});

您可以使用 bindStore 创建新商店,或者使用 loadData 将新数据加载到现有商店:

combo.store.loadData(['d', 'e'].map(function(item){ return [item]; }));

工作示例:https://fiddle.sencha.com/#fiddle/tb1

试试这个:

comboObje.getStore().loadData([{'field1': 'd'}, {'field1': 'e'}]);

当您将数组分配给 'store' 配置时,ExtJS 会自动生成字段名称。