ExtJS网格选择模型

时间:2012-04-04 08:51:29

标签: javascript extjs extjs4

我有一个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的{​​{1}}响应中映射了displayJSON

我可以检索storedescription的值,而不必在extra中映射它们。

2 个答案:

答案 0 :(得分:1)

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

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

如果这是动态原因,请查看此帖子以获得解决方案。 Dynamic model with ExtJS 4

答案 1 :(得分:1)

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