Как правильно сделать Ext.data.reader.Xml?
var reader = new Ext.data.reader.Xml({ record: 'USERS' }, rows); reader.readRecords(xml); В последней строке если без model выдаёт ошибку. model заранее не знаю. Как сделать, чтобы ошибки не было? |
http://docs-origin.sencha.com/extjs/...ml-method-read
есть возможность указать recordCreator (дефолтный пытается вызвать конструктор модели) который будет делать то что вам нужно без создания модели. |
Похоже, что я не понимаю чего-то глобального. У меня есть запрос к бд. Бд возвращает xml. Мне нужно поместить его в store. В extjs3 это делалось так:
store = new Ext.data.SimpleStore({ fields: [], data: [] }); var reader = new Ext.data.XmlReader({ record: 'USERS' }, rows); store.loadRecords(reader.readRecords(xml); В extjs5 какой-то иной принцип и я что-то упускаю. Что мне сделать, чтобы данные загружались в стор? Я написала recordCreator просто с return null, но readRecords падает. Подскажите, пожалуйста. |
так или иначе стор не может существовать без модели. даже если вы определяете fields вместо model неявно создается модель.
вы уверены что у вас абсолютно динамический набор данных и вы не можете описать его моделью? не тот ли у вас случай когда есть модель с широким множеством полей, а в зависимости от запроса вам приходит то или иное их подмножество? ну ок ..даже если у вас нет предопределенного "широкого" списка полей, можно изобрести чтото типа этого: var reader = new Ext.data.XmlReader(...); var store, fields; var records = reader.readRecords(xml, { recordCreator : function (data) { // здесь судя по доке уже извлечены данные записи, они идут первым агрументом - data // вот тут и создавайте новый стор скормив ему fields (или model) сформированный на основе data // если первая прочтенная запись - создаем новый стор, с новым списком полей if (!fields) { fields = Ext.Object.getKeys(data); store = new Ext.data.Store({ fields : fields }); } return new store.model(data); } }); if (store) store.loadRecords(records); |
Спасибо! Нашла переменную с полями, делаю нормальную модель и всё работает.
|
Часовой пояс GMT +3, время: 09:01. |