来自这样的典型商店
Ext.define('User', {
extend: 'Ext.data.Model',
fields: [
{name: 'firstName', type: 'string'},
{name: 'lastName', type: 'string'},
{name: 'age', type: 'int'},
{name: 'eyeColor', type: 'string'}
]
});
var myStore = Ext.create('Ext.data.Store', {
model: 'User',
proxy: {
type: 'ajax',
url : '/users.json',
reader: {
type: 'json',
root: 'users'
}
},
autoLoad: true
});
是否可以从myStore获取原始Json?
答案 0 :(得分:17)
怎么样:
myStore.proxy.reader.rawData
答案 1 :(得分:11)
接受的解决方案在我的配置中不起作用:ExtJs 4.1和带有内存代理的网格 - 在我将项添加到gird(并且商店对象反映出来)之后它返回空。以下代码用于将存储内容编码为JSON字符串:
var json = Ext.encode(Ext.pluck(store.data.items, 'data'));
干杯!
答案 2 :(得分:4)
花了我很多年才找到解决方案,但这里有一个可行的解决方案。
myStore .on({ 'load': function (store, records, successful)
{
console.log(store.getProxy().getReader().rawData);
}
});
答案 3 :(得分:1)
创建商店后,代理阅读器rawData / jsonData将可访问。要访问它,请尝试以下操作:
store.on('load', function() {
console.log('store.proxy.reader.jsonData');
console.log(store.proxy.reader.jsonData);
}, this, { single: true });
答案 4 :(得分:0)
也许,你可以试试这个:
var json = Ext.JSON.encode(myStore.getRange());
CYA!
答案 5 :(得分:0)
Ext.data.Store({....
proxy: {
...
reader: {
**keepRawData: true,**
type: 'json',
rootProperty: 'root',
successProperty: 'success'
}
}
});
答案 6 :(得分:-1)
看起来我通过将事件侦听器挂钩到数据存储来找到解决方案:
var myStore = Ext.create('Ext.data.Store', {
...
listeners: {
'load': {
fn: function(store, records, success, operations) {
Ext.each(records, function(rec) {
console.log(Ext.encode(rec.raw));
});
}
}
}
...
});