2012-03-15 2 views
2

У меня есть небольшая проблема, мне нужно загрузить некоторые данные JSon к моей сетке, но у меня есть specifical формат JSON как это:Extjs заказа читатель

{"response":[ 
    76297, 
    {"aid":66132303,"owner_id":30729520,"artist":"Шакира - Танго","title":"So objection!! I don't wanna be the exception to get a bit of your attention... I love you for free and I'm not your mother, but you don't even bother... Objections!! I'm tired of this triangle... GOT DIZZY DANCING TANGO&#3","duration":224,"url":"http:\/\/cs1663.vkontakte.ru\/u17640367\/audio\/ebde4092fde5.mp3","lyrics_id":"2203614"}, 
    {"aid":129159521,"owner_id":23962687,"artist":"Yann Tiersen","title":"Mother's Journey (Ennja Remix)","duration":281,"url":"http:\/\/cs6000.vkontakte.ru\/u97497795\/audio\/fb309491bc82.mp3","lyrics_id":"21301612","album":"21017129"}, 
    {"aid":81267321,"owner_id":673065,"artist":"Hurts","title":"Mother Nature","duration":170,"url":"http:\/\/cs4633.vkontakte.ru\/u673065\/audio\/d329378eb2d2.mp3","lyrics_id":"5693202"}] 
} 

Таким образом, первый элемент массива является общим количеством записей , а другие - записи для загрузки. Если я попытаюсь загрузить такие записи в свою сетку, у меня есть пустая строка внизу, что такое решение? Должен ли я использовать некоторый «пользовательский» читатель, как его реализовать?

ответ

3

Да. Скорее всего, вам нужно будет расширить стандартный Json reader (Ext.data.reader.Json), чтобы сначала проанализировать длину и начать анализ записей из второго элемента.

Обновление: на самом деле это довольно просто.

  1. Прежде всего вам нужно определить наше место, где стандартный читатель не ведет себя так, как вы хотите, чтобы он себя вел. Добавьте следы в стандартный класс читателей, чтобы узнать, что происходит. Скорее всего, это будет где-то около readResponse() метода.

  2. Создайте свой собственный класс читателей, расширяющий стандартный стандарт. Простое наследование.

  3. Метод переопределения, который вам нужен с новой логикой.

Код ExtJs очень хорошо написан и прокомментирован. Мне показалось, что читать и понимать это довольно интересно.

В качестве дополнительной заметки я бы добавил, что эта задача (расширение существующего кода ExtJs с вашей функциональностью) - это огромная помощь, чтобы лучше понять, как работает ExtJs внутри, и после этого вы будете чувствовать себя намного более комфортно, работая с ExtJs.

+0

Можете ли вы привести мне пример? Я не могу изобразить, как это сделать = ( –

+1

Ну, здесь мой пример не будет ничего решать, потому что моя проблема была совершенно другой. Позвольте мне добавить больше описания к ответу. – sha

+0

Спасибо большое, это больше, чем я могу только вообразить! –

Смежные вопросы