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.*和更高版本中,它可以完美地工作。对不起,给你指错方向了。