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

时间:2015-09-03 16:49:08

标签: javascript extjs extjs4

我有一个类似下面的组合框

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

在不创建Ext存储对象的情况下,我将数组分配给存储,并且显示的值很好。

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

更新商店

我尝试过将新值分配给商店,如下所示

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

但它没有更新值。

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

3 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:2)

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

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

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

将以下代码粘贴到Sencha Fiddle作为'概念验证':

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']);
    }
});

答案 2 :(得分:1)

试试这个:

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

将数组分配给'存储'配置,ExtJS自动生成字段名称。