Search code examples
extjssencha-architectextjs5

Store.load() does not execute after setting a new model


I want to reconfigure a GridPanel using myGridPanel.reconfigure(store,columns). I can't use metachange event for this because I need to make a separate call for metadata (back-end constraint). I make the call for metadata, I receive the metadata that I need and then create a new model with a new set of fields and a new proxy (new url). I set the model to the existing store (which is bind to my gridPanel) and then I call store.loadPage(1) (because I use a bufferedStore) and myGridPanel.reconfigure(store,meta.columns). My problem is that store.loadPage(1) is not happening. I don't know what I am missing...

My store looks like this:

Ext.define('Foo.store.Results', {
    extend: 'Ext.data.BufferedStore',

    requires: [
        'Foo.model.ResultRecord'
    ],

    config: {
        remoteFilter: true
    },

    constructor: function(cfg) {
        var me = this;
        cfg = cfg || {};
        me.callParent([Ext.apply({
            pageSize: 50,
            storeId: 'Results',
            autoLoad: false,
            model: 'Foo.model.ResultRecord',
            leadingBufferZone: 50,
            trailingBufferZone: 10
        }, cfg)]);
    }
}); 

I create a new model like this:

createResultModel: function(url,fields) {
        console.log('createResultsModel called');
        return Ext.define('Foo.model.ResultsModel'+Ext.id(), {
            extend: 'Ext.data.Model',
            fields: fields,
            proxy: {
                type: 'ajax',
                url: url,
                useDefaultXhrHeader: false,
                reader: {
                    type: 'json',
                    rootProperty: 'data'
                }
            }
        });
    }

And I change the model and reconfigure grid like this:

 myStore.setModel(me.createResultModel('resources/data/results.json',meta.fields));
 myStore.loadPage(1);
 resultsGrid.reconfigure(myStore,meta.columns);

Thank you!


Solution

  • It seems that the store.load() was called but with the wrong url.... . I don't know if that is the desired functionality but it seems that the proxy from the old model was set to the store and when I set the new model, the proxy remained the old one.