Search code examples
javascripteventsextjsstore

ExtJs: Get store data on store creation


I have an in-line store that is inside of a simple combobox. This store has some default inline-data. Now I'm looking for an event that gets fired once the store is created and this event needs to supply me with the data that is in the store.

I tried it like this:

Ext.create('Ext.form.ComboBox', {
    fieldLabel: 'Choose',
    store: {
        autoLoad: true,
        fields: [
            {name: 'name', type: 'string'}
        ],
        data : [
            {"name":"TestName_A"},
            {"name":"TestName_B"},
            {"name":"TestName_C"},
        ],
        listeners: {
            load: function(store) {
                let records = store.getData()
                records.forEach(record => {
                    console.log(record.getField('name'))
                })
            }
        }
    },
    queryMode: 'local',
    valueField: 'name',
    displayField: 'name',
    renderTo: Ext.getBody()
});

But it doesn't work. store.getData() doesn't seem to contain my records.

There's my fiddle: https://fiddle.sencha.com/?fiddle=v7#fiddle/1h53


Solution

  • Use this now store show console data:

    Ext.create('Ext.form.ComboBox', {
        fieldLabel: 'Choose',
        queryMode: 'local',
        valueField: 'name',
        displayField: 'name',
        renderTo: Ext.getBody(),
        listeners: {
            afterrender: function(me) {
    
                var store = Ext.create('Ext.data.Store', {
                    //autoLoad: true,
                    fields: [
                        {name: 'name', type: 'string'}
                    ],
                    data : [
                        {"name":"TestName_A"},
                        {"name":"TestName_B"},
                        {"name":"TestName_C"},
                    ],
                    listeners: {
                        datachanged : function(store) {
                            Ext.each(store.data.items,function(rec){
                               console.log(rec.data.name); 
                            });
                        }
                    }
                });
                me.setStore(store);
                store.load();
            }
        },
    });