我正在尝试在创建项目后将项目添加到组合框中,但是在商店数据中添加但未在UI中更新。
Ext.onReady(function () {
Ext.create('Ext.data.Store', {
storeId: 'simpsonsStore',
autoLoad: true,
fields: ["name", "value"],
listeners: {
load: function(store, rec) {
store.add([["val1",1],["val2",2]]);
}
}
});
Ext.create('Ext.form.field.ComboBox', {
store: Ext.data.StoreManager.lookup('simpsonsStore'),
valueField: "value",
displayField: "name",
renderTo: Ext.getBody()
});
var s2 = Ext.getStore('simpsonsStore');
s2.loadData([["val3",3]],true);
});
首先添加Val1和Val2。渲染后我想添加val3
答案 0 :(得分:0)
我认为autoload=true
假定没有数据并且正在鞭打s2.loadData()
首先执行。
这在最新版本中不会发生。
在没有自动加载的情况下手动调用store.load()
可以解决问题。组合框也需要queryMode ='local'
类似的工作小提琴:http://jsfiddle.net/tonymayoral/8jzfo7zj/1/
var st=Ext.create('Ext.data.Store', {
storeId: 'simpsonsStore',
//autoLoad: true,
fields: ["name", "value"],
listeners: {
load: function(store, rec) {
store.add([["val1",1],["val2",2]]);
}
}
});
st.load();
Ext.create('Ext.form.field.ComboBox', {
store: Ext.data.StoreManager.lookup('simpsonsStore'),
valueField: "value",
displayField: "name",
queryMode:'local', //needs to be local
renderTo: Ext.getBody()
});
var s2 = Ext.getStore('simpsonsStore');
s2.loadData([["val3",3]],true)