2

我正在使用带有标准 MVC 架构的 ExtJS 4.0.7。我有一个带有自定义storemodel类的网格。数据通过远程加载store.load()。我正在使用ext-dev.js动态依赖加载进行调试。

该应用程序加载正常,Chrome 控制台中没有错误。但问题是我商店中的记录与我的 AJAX 调用提供的数据完全相同,无论我的模型中有哪些字段。我什至尝试重命名和删除字段,但 Ext 没有注意。

使用控制台浏览我的store对象显示所有记录都有自己的自定义运行时生成的模型类,名为Ext.data.reader.Json-Modelext-gen1141. 这是我的代码的要点:

我的模型:

Ext.define('MyApp.model.FooModel', {
    extend: 'Ext.data.Model',

    idProperty: 'column1',
    fields: [
        {name: 'column1', convert: function(value, record) {
            return value + ' TEST-TEST-TEST';
        }},
        'column2',
        'column3'
    ]
});

我的店铺:

Ext.define('MyApp.store.FooStore', {
    extend: 'Ext.data.Store',
    model: 'MyApp.model.FooModel',
    autoLoad: false,
    proxy: {
        type: 'ajax',
        url: '/blah/blah',
        reader: {
            type: 'json'
        }
    }
});

我的网格:

Ext.define('MyApp.view.FooGrid', {
    extend: 'Ext.grid.Panel',
    alias: 'fooGrid',
    store: 'FooStore',
    columns: [{
        text: 'Column 1',
        dataIndex: 'column1',
        flex: 1
    },{
        text: 'Column 2',
        dataIndex: 'column2',
        flex: 1
    },{
        text: 'Column 3',
        dataIndex: 'column3',
        flex: 1
    }]
});

我的控制器:

Ext.define('MyApp.controller.Foo', {
    extend: 'Ext.app.Controller',
    views: ['FooGridFrame'],
    models: ['FooModel'],
    stores: ['FooStore'],

    init: function() {
        this.control({
            'fooGrid': {
                activate: function(grid) {
                    grid.getStore().load();
                }
            }
        });
    }
});

我不能说我做错了什么。有任何想法吗?

4

1 回答 1

0

事实证明,AJAX 后端(由 Ext3 的另一个开发人员编写)通过metaData属性提供了一些配置数据。我不知道ExtStore对此有任何关注。我的问题已通过更新后端以省略该metaData属性来解决。

它可能也可以更新metaData以提供我需要的适当配置,但我正在重构以使所有 UI 配置都发生在客户端中。

于 2012-05-24T19:13:28.760 回答