Sencha touch 2: в списке отображается только последний элемент, полученный из API

Я хочу показать данные из следующего API в List :

http://customer.appxtream.com/astro.apps.cms/jsonFeed.action/?service=astroSportsDataService&action=grabJsonText&mimeType=application/json&p1=HighlightNewsList&p2=EURO2012

когда я получаю данные, сеть Chrome показывает мне, что все элементы были получены, но список показывает только данные из последнего элемента в API, вот мой код:


Просмотреть

Ext.define('astro.view.HighliteNews', {
    extend: 'Ext.DataView',
    xtype: 'highliteNews',
    config:{

        title:'xren',
        store: 'highliteNewsStoreId',
        itemtap: true,
        scrollable:'horizontal',
        inline:{
            wrap:false
        },

        itemTpl:[
             '<div><img src="{imageLink}"/> </div>',
        ],
    },
});

Магазин

Ext.define('astro.store.HighliteNewsStore',{
    extend: 'Ext.data.Store',

    xtype:'highliteNewsStore',

    config:{
        model: 'astro.model.HighliteNewsModel',
        autoLoad: true,
        storeId: 'highliteNewsStoreId',

        proxy:{
            type:'ajax',

           url :'http://customer.appxtream.com/astro.apps.cms/jsonFeed.action',

            extraParams:{
                service:'astroSportsDataService',
                action:'grabJsonText',
                p1:'HighlightNewsList',
                p2:'EURO2012',
                mimeType:'application/json'

            },

            reader:{
                type:'json',
                rootProperty:'cmsHighlightNewsList',
            },

        },
    }
});

Модель

Ext.define('astro.model.HighliteNewsModel',{
    extend: 'Ext.data.Model',

    config:{
        fields: ['imageLink'],

    }
});

Таким образом, сеть показывает, что из API отправляются 3 изображения, но в списке отображается ТОЛЬКО ПОСЛЕДНЕЕ ИЗОБРАЖЕНИЕ. Пожалуйста помоги


person Arash.H    schedule 15.06.2012    source источник
comment
твоя ссылка не рабочая чувак...   -  person himanshu    schedule 15.06.2012
comment
ну, если я ввожу ссылку в браузере, я получаю все данные, значит, он работает, даже когда я открываю раздел «Сеть» в Chrome, я вижу, что все данные получены.   -  person Arash.H    schedule 18.06.2012


Ответы (4)


Я решил проблему, ребята :), существует конфликт между Sencha и JsonP, поэтому, если вы назначите idproperty своей модели, проблема будет решена:

config:{
    idProperty: 'HighliteIdProperty',
    fields: ['imageLink'],
}
person Arash.H    schedule 19.06.2012

Несколько вещей, которые я бы предложил:

Добавить прослушиватель к событию загрузки магазина

Это просто для проверки того, что все данные загружены в ваш магазин. Вы можете сделать это разными способами:

В контроллере

store.on({
  load:function(){
    console.log(store.getCount());
  }
});

или прямо в конфиге магазина с атрибутом listeners

listeners:{
  load:function(store){
    console.log(store.getCount());
  }
}

Проверьте DOM

В Web Inspector/Firebug проверьте, есть ли там ваши элементы или только последний.

Я думаю, вы также можете попробовать эту команду в консоли:

Ext.DomQuery.select('div[class=x-dataview-item]').length

Он вернет количество элементов в вашем представлении данных.

Установите ширину и высоту изображения

У меня также была такая же проблема с динамически загружаемым представлением данных. Все изображения были в DOM, но слишком малы, чтобы их можно было увидеть. Поэтому я предлагаю вам дать им класс CSS с определенной шириной и высотой.

Это все, о чем я могу думать на данный момент.

Надеюсь это поможет

person Titouan de Bailleul    schedule 15.06.2012
comment
Спасибо, ребята, проблема не в размере изображений, потому что это происходит и с другими полями, я тоже поставил этот слушатель, но ничего не получаю в консоли, НИКАКОЙ ошибки, никакого сообщения, ничего ... - person Arash.H; 18.06.2012
comment
Я также добавил Ext.DomQuery.select('div[class=x-dataview-item]').length в консоль, и я получаю 1, то есть только 1 элемент - person Arash.H; 18.06.2012
comment
Я решил проблему, ребята, существует конфликт между Sencha и JsonP, поэтому, если вы назначите idproperty своему магазину, проблема будет решена: - person Arash.H; 19.06.2012

Спасибо, Араш, за этот вопрос и ответ. Мы столкнулись с аналогичной проблемой и обнаружили, что у нас не определена модель. В нашем случае определение модели сработало. Однако это сработало, когда мы получали список воспроизведения с YouTube, а теперь — при получении списка из электронной таблицы Google. Надеюсь, это поможет другим, кто использует электронную таблицу Google.

person Sam    schedule 01.07.2012

отрегулируйте высоту в конфигурации вида....... это может быть проблемой

person ghost...    schedule 15.06.2012
comment
Я проголосовал против, потому что этот ответ действительно плохой и не дает никаких объяснений. Кроме того, он, по-видимому, работает над горизонтальным списком, поэтому я не думаю, что регулировка высоты что-то изменит. - person Titouan de Bailleul; 16.06.2012