Ответ 1
Как насчет:
myStore.proxy.reader.rawData
Из типичного магазина, подобного этому
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
});
Возможно ли получить сырой Json из myStore?
Как насчет:
myStore.proxy.reader.rawData
Принятое решение не работало в моей конфигурации: ExtJs 4.1 и сетка с прокси-сервером памяти - он возвращался пустым после того, как я добавил элементы в gird (и объект хранилища отразил это). Следующий код работал для содержимого содержимого кодировки в строке JSON:
var json = Ext.encode(Ext.pluck(store.data.items, 'data'));
Ура!
Мне потребовалось время, чтобы найти решение этого, но вот одно решение, которое будет работать.
myStore .on({ 'load': function (store, records, successful)
{
console.log(store.getProxy().getReader().rawData);
}
});
Чтение прокси-сервера rawData/jsonData станет доступным после создания хранилища. Чтобы получить доступ к нему, попробуйте следующее:
store.on('load', function() {
console.log('store.proxy.reader.jsonData');
console.log(store.proxy.reader.jsonData);
}, this, { single: true });
возможно, вы можете попробовать:
var json = Ext.JSON.encode(myStore.getRange());
суа!
Ext.data.Store({....
proxy: {
...
reader: {
**keepRawData: true,**
type: 'json',
rootProperty: 'root',
successProperty: 'success'
}
}
});
Похоже, я нашел решение, подключив прослушиватели событий к хранилищу данных:
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));
});
}
}
}
...
});