我有一个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}}响应中映射了display
和JSON
。
我可以检索store
和description
的值,而不必在extra
中映射它们。
答案 0 :(得分:1)
没有。模型或商店必须设置您希望从JSON数据中获得的所有字段。
我很困惑为什么你不想映射额外的字段?这是纯粹的时间节省,并希望有一种更快的方式来访问数据?或者您希望字段名称是动态的吗?
如果这是动态原因,请查看此帖子以获得解决方案。 Dynamic model with ExtJS 4
答案 1 :(得分:1)
您可以访问模型上的.raw属性,该属性将包含阅读器中的原始JSON。