Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何动态更改ExtJS存储数据_Javascript_Extjs_Extjs4 - Fatal编程技术网

Javascript 如何动态更改ExtJS存储数据

Javascript 如何动态更改ExtJS存储数据,javascript,extjs,extjs4,Javascript,Extjs,Extjs4,我有一个组合框,如下所示 { xtype:'combo', fieldLabel:'Test', store:['a','b'] } comboObje.store=['d','e']; 在不创建Ext store对象的情况下,我将数组分配给store,并且它可以很好地显示值 在某些操作中,我想用['d','e'更新存储 我已经尝试分配新的值来存储,如下所示 { xtype:'combo', fieldLabel:'Test', store:['a','b'] }

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

{
  xtype:'combo',
  fieldLabel:'Test',
  store:['a','b']
}
comboObje.store=['d','e'];
在不创建Ext store对象的情况下,我将数组分配给store,并且它可以很好地显示值

在某些操作中,我想用['d','e'更新存储

我已经尝试分配新的值来存储,如下所示

{
  xtype:'combo',
  fieldLabel:'Test',
  store:['a','b']
}
comboObje.store=['d','e'];
但它并没有更新这些值


如何用存储中的新值替换原始值。

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

comboObje.setStore(['d','e']);
这在以前的版本中不起作用

将以下代码粘贴到中作为“概念证明”:

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]; }));
工作示例:

尝试以下操作:

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

当您将数组分配给“存储”配置时,ExtJS会自动生成字段名。

这绝对有效。毫无疑问我将编辑我的答案。好的,让我来做一个提琴。你的例子不适用于。。我使用的是ExtJS4.2,当我在Fiddle中执行您的示例时,我是lol您的概念证明在ExtJS4.2中失败了是的,我看到了。没有意识到
setStore
在4.2.*中不存在。在5.*和更高版本中,它可以完美地工作。对不起,给你指错方向了。