В поле модели ExtJS есть опция отображения.магазин extjs fail
fields: [
{name: 'brandId', mapping:'brand.id', type: 'int'},
{name: 'brandName', mapping:'brand.name', type: 'string'},
Проблема заключается в том: если ответ сервера не содержит поле (поле бренда в моем примере) и отображение из внутреннего полей определяется, Ext магазин молча не удается загрузить какую-либо запись.
Есть ли у кого-нибудь проблемы с этим? Это какая-то ошибка?
ОБНОВЛЕНИЕ Чтобы было ясно: предположим, у меня есть десять полей в моей модели. Ответ от сервера имеет девять полей, один отсутствует. Если в этом поле нет вложенного сопоставления (сопоставление: «x.y.z»), все в порядке - запись загружает запись, поле пуст. Но если это поле должно быть загружено из некоторого вложенного поля и имеет параметр сопоставления - хранилище не загружает НИЧЕГО.
ОБНОВЛЕНИЕ 2 Я нашел код, который вызывает проблемы. Дело в том: когда Ext пытается загрузить некоторое поле из Json он выполняет проверку, как этот
(source["id"] === undefined) ? __field0.defaultValue : source["id"]
Но когда поле имеет опцию отображения (отображение «brand.id») Читатель делает это таким образом
(source.brand.id === undefined) ? __field20.defaultValue : source.brand.id
, вызывающий ошибку, если источник не имеет поля бренда.
В случае, если у вас есть такие же проблемы, как я: вы можете исправить это перегрузка Ext.data.reader.Json «s метод createFieldAccessExpression
Какое другое поведение вы ожидаете, если магазин не сможет найти его запись в ответе? Я имею в виду, какова ваша проблема с этим поведением? –
Ну, запись исходит от сервера, у нее просто нет «бренда». Если запись пропускает какое-то поле и нет сопоставления, все в порядке, запись загружается, поле пуста – mik
«(поле бренда в моем примере)« У вас нет поля бренда, показанного здесь. У вас есть brandId и brandName. Просьба уточнить. – Jere