ExtJS 4(MVC)商店不使用我的自定义模型类

Posted

技术标签:

【中文标题】ExtJS 4(MVC)商店不使用我的自定义模型类【英文标题】:ExtJS 4 (MVC) Store not using my custom Model class 【发布时间】:2012-05-23 23:29:16 【问题描述】:

我正在使用带有标准 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();
                
            
        );
    
);

我不知道我做错了什么。有什么想法吗?

【问题讨论】:

我找到了答案。我的数据提要有一个 metaData 属性指定字段配置,显然商店正在使用这些来生成自己的模型,而不是我的 FooModel 中的模型。我会尽快将其写成答案。 【参考方案1】:

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

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

【讨论】:

以上是关于ExtJS 4(MVC)商店不使用我的自定义模型类的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS 4 中的自定义溢出处理程序实现

如何使用 ExtJs 4 和 MVC 从另一个类访问一个类?

我应该在哪里定义 ExtJS 4 MVC 中的全局函数?

如何在 extjs 4 (mvc) 中过滤静态 treeStore

在没有类依赖的自定义类/子系统中使用 Laravel 4 模型

带有 Ext JS 的 MVC 架构中 store.load() 的动态代理 URL