Ext jS 4: комбинированная модель магазина; динамически настраиваемые поля - PullRequest
1 голос
/ 01 ноября 2011

я пытаюсь заставить работать динамически настраиваемый модельный магазин.

Если я использую только магазин, он БУДЕТ;

    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
    });

Но если я представлю модель, она не будет работать;

    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; Поля не определены. Я попытался разделить хранилище и модель в отдельных файлах (типично Ext JS 4 MVC), используя конструкторы и отслеживая, что каждая переменная верна; та же ошибка.

Заранее спасибо.

1 Ответ

5 голосов
/ 01 ноября 2011

Вы должны использовать Ext.define для определений модели, потому что магазин будет делать Ext.create вашей модели, когда новые "записи" добавляются в хранилище.Предполагается, что модель уже имеет определенные поля, когда вы делаете Ext.create('myGridModel',{}).

Например,

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

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

См. это для получения более подробной информации.

...