Ext jS 4:Store-Model组合;动态配置字段

时间:2011-10-31 20:55:59

标签: extjs extjs4

我试图制作动态配置的模型存储工作。

如果我只使用商店,它会起作用;

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

但是,如果我介绍一个模型,WONT工作;

    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 个答案:

答案 0 :(得分:5)

您必须对模型定义使用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
    });

有关详细信息,请参阅this