将数据添加到存储后,EXT-JS ui不会更新

时间:2017-03-03 16:31:12

标签: javascript extjs extjs3

我正在尝试在创建项目后将项目添加到组合框中,但是在商店数据中添加但未在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

1 个答案:

答案 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)