1

我有一个 ExtJS 网格,其中有一个映射到它的商店。

商店的 JSON 响应包含 20 个字段,但我只映射了商店中的 10 个字段。我是否可以在无需在商店中映射它们的情况下获得其他 10 个字段,或者我是否有必要将所有字段映射到商店。在网格的行选择事件上执行此操作。至于代码,我可以创建网格、映射存储、触发事件,甚至可以使用映射的 10 字段获取所选行的记录。

有什么建议么 ??

根据 Shekhar 的要求:

店铺定义

Ext.define('gdoc.store.PrintPaperStore', {
    extend: 'Ext.data.Store',

    constructor: function(cfg) {
        var me = this;
        cfg = cfg || {};
        me.callParent([Ext.apply({
            autoLoad: true,
            storeId: 'PrintPaperStore',
            proxy: {
                type: 'ajax',
                url: 'urlToRetrieveTheJSON',
                reader: {
                    type: 'json',
                    root: 'root'
                }
            },
            fields: [{
                    mapping: 'value',
                    name: 'value'
                },
                {
                    mapping: 'display',
                    name: 'display'
                }
            ]
        }, cfg)]);
    }
});

JSON响应:

{
     "root": [{
         "value": "COATED115",
         "display": "Coated recycled paper (115gms)",
         "description": "Good quality",
         "extra": "EXTRA INFO"
     }, {
         "value": "COATED135",
         "display": "Coated recycled paper (135gms)",
         "description": "Good quality"
     }, {
         "value": "OFFSET",
         "display": "Offset recycled paper (80gms)",
         "description": "Good quality",
         "extra": "EXTRA INFO"
     }, {
         "value": "OTHER",
         "display": "Other paper (client to order)",
         "description": "Good quality",
         "extra": "EXTRA INFO"
     }]
 }

value正如你所看到的,我只映射display了.JSONstore

我是否可以检索 的值,description而不extra必将它们映射到store.

4

2 回答 2

1

不可以。模型或商店必须设置您希望从 JSON 数据中获得的所有字段。

我很困惑为什么你不想映射额外的字段?这纯粹是为了节省时间,并希望有一种更快的方法来访问数据?还是您希望字段名称是动态的?

如果是动态原因,请查看此帖子以获取解决方案。使用 ExtJS 4 的动态模型

于 2012-04-04T09:09:10.593 回答
1

您可以访问模型上的 .raw 属性,该属性将包含来自阅读器的原始 JSON。

于 2012-04-04T09:18:48.933 回答