vto
vto

Reputation: 331

Ext jS 4: Store-Model combo; dynamically configuring fields

im trying to make a dynamicly configurated model-store work.

If i only use a store it WILL work;

    var gridStore = Ext.create('Ext.data.JsonStore', {
        fields: modelTableStructure['fieldsModel'],
        proxy: {
            type:'ajax',
            url: Ext.ux.db.vars.urlGetTableData,
            actionMethods: {
                read: 'POST'
            },
            extraParams:{
                servidorSql: serverConfig.servidorSql,
                dbLogin: serverConfig.dbLogin,
                dbPass: serverConfig.dbPass,
                db:db,
                tabla:tabla
            }
        },
        autoLoad: true
    });

But if I introduce a model it WONT work;

    var gridModel = Ext.create('Ext.data.Model',{
        fields: modelTableStructure['fieldsModel']
    });

    var gridStore = Ext.create('Ext.data.JsonStore', {
        model: gridModel,
        proxy: {
            type:'ajax',
            url: Ext.ux.db.vars.urlGetTableData,
            actionMethods: {
                read: 'POST'
            },
            extraParams:{
                servidorSql: serverConfig.servidorSql,
                dbLogin: serverConfig.dbLogin,
                dbPass: serverConfig.dbPass,
                db:db,
                tabla:tabla
            }
        },
        autoLoad: true
    });

Firebug's error; Fields is undefined. I have tried to separate the store and model in separate files (typical Ext JS 4 MVC) using constructors and tracking that every variable is correct; same error.

Thanks in advance.

Upvotes: 1

Views: 2748

Answers (1)

Ryan
Ryan

Reputation: 1557

You have to use Ext.define for Model definitions, because the store will do the Ext.createing of your model when new "records" are added to the store. The model is already assumed to have defined fields when you do Ext.create('myGridModel',{}).

For instance,

    Ext.define('myGridModel', {
        extend: 'Ext.data.Model',
        fields: modelTableStructure['fieldsModel']
    });

    var gridStore = Ext.create(Ext.data.Store, {
        model: 'myGridModel',
        // other config options below
    });

See this for more details.

Upvotes: 5

Related Questions