Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.02.2015, 22:18
Аспирант
Отправить личное сообщение для Risa Посмотреть профиль Найти все сообщения от Risa
 
Регистрация: 21.10.2014
Сообщений: 47

Как правильно сделать Ext.data.reader.Xml?
var reader = new Ext.data.reader.Xml({
            record: 'USERS'
        }, rows);

reader.readRecords(xml);


В последней строке если без model выдаёт ошибку. model заранее не знаю. Как сделать, чтобы ошибки не было?
Ответить с цитированием
  #2 (permalink)  
Старый 11.02.2015, 06:32
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 214

http://docs-origin.sencha.com/extjs/...ml-method-read

есть возможность указать recordCreator (дефолтный пытается вызвать конструктор модели) который будет делать то что вам нужно без создания модели.
Ответить с цитированием
  #3 (permalink)  
Старый 11.02.2015, 17:49
Аспирант
Отправить личное сообщение для Risa Посмотреть профиль Найти все сообщения от Risa
 
Регистрация: 21.10.2014
Сообщений: 47

Похоже, что я не понимаю чего-то глобального. У меня есть запрос к бд. Бд возвращает 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 падает. Подскажите, пожалуйста.
Ответить с цитированием
  #4 (permalink)  
Старый 11.02.2015, 20:49
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 214

так или иначе стор не может существовать без модели. даже если вы определяете 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);

Последний раз редактировалось siber-biber, 12.02.2015 в 10:32.
Ответить с цитированием
  #5 (permalink)  
Старый 12.02.2015, 17:11
Аспирант
Отправить личное сообщение для Risa Посмотреть профиль Найти все сообщения от Risa
 
Регистрация: 21.10.2014
Сообщений: 47

Спасибо! Нашла переменную с полями, делаю нормальную модель и всё работает.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать такую страницу mortido Элементы интерфейса 11 02.10.2014 07:20
Как правильно обновить div из БД в MVC??? espltd AJAX и COMET 2 11.04.2014 01:28
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как сделать калькулятор и с чего начать? A.P. Yellowman Общие вопросы Javascript 3 15.11.2013 21:32
try и catch подскажите как правильно сделать Jekel Javascript под браузер 9 31.03.2010 10:33