Лента друзей

Устаревшие и ненужные темы форума

Лента друзей

Сообщение Serge » 12 июн 2012, 19:25

Добрый вечер.
Пытаюсь сделать ленту друзей в i-Frame приложении, использую для этого плагин jCarousel.
Проблема - получаю профили друзей из ВК, при попытке запихнуть в карусель ничего не происходит. Делаю так:
  1.  
  2. VK.api("getProfiles", {"uids":str, "fields":"uid, first_name, last_name, photo"}, function(fr_info){
  3. for(var j = 0; j < fr_info.response.length; j++)
  4. {
  5.     var str = '<li><img src="' + fr_info.response[j].photo + '" /></li>';
  6.     carousel_list.push(str);
  7. }
  8. }
  9. );

Запуск самой карусели:
  1.  
  2. function carousel_itemLoadCallback(carousel, state)
  3. {
  4.     for (var i = carousel.first; i <= carousel.last; i++)
  5.     {
  6.         if (carousel.has(i))
  7.         {
  8.             continue;
  9.         }
  10.         if (i > carousel_list.length)
  11.         {
  12.             break;
  13.         }
  14.         carousel.add(carousel_list[i-1]);
  15.     }
  16. };
  17.  
  18. jQuery(document).ready(function() {
  19.     jQuery("#fr_carousel").jcarousel({
  20.         scroll: 1,
  21.     itemLoadCallback: {onBeforeAnimation: carousel_itemLoadCallback},
  22.     size: carousel_list.length
  23.     });
  24. });

В результате получаю карусель с 5ю элементами (друзей больше), при этом все элементы карусели пустые. Что надо исправить? Долго бьюсь, не выходит.
Или может есть другие плагины для реализации этой задачи.
Serge
WEB Team
WEB Team
 
Автор темы
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: Лента друзей

Сообщение Serge » 12 июн 2012, 19:42

Нашел ошибку в коде, конкретно - carousel.add(i, carousel_list[i-1]);
Но проблема осталась - не работает. Сделал (как по мне) криво - в функцию обработки данных о профилях запихал инициализацию карусели.
http://sevenlines.com.ua - разработка и продвижение сайтов
Serge
WEB Team
WEB Team
 
Автор темы
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

Re: Лента друзей

Сообщение Alazaur » 12 июн 2012, 19:57

По вот этому куску кода
  1. jQuery(document).ready(function() {
  2.     jQuery("#fr_carousel").jcarousel({
  3.         scroll: 1,
  4.     itemLoadCallback: {onBeforeAnimation: carousel_itemLoadCallback},
  5.     size: carousel_list.length
  6.     });
  7. });

я так понимаю у вас и VK.api("getProfiles") и запуск карусели выполняются после того, как документ построен, то есть одновременно, вот и выходит, что карусель строится раньше чем от ВК приходят данные.
Alazaur
Разработчик
Разработчик
 
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25
Благодарил (а): 24 раз.
Поблагодарили: 121 раз.

Re: Лента друзей

Сообщение Serge » 12 июн 2012, 21:28

Alazaur писал(а):По вот этому куску кода
  1. jQuery(document).ready(function() {
  2.     jQuery("#fr_carousel").jcarousel({
  3.         scroll: 1,
  4.     itemLoadCallback: {onBeforeAnimation: carousel_itemLoadCallback},
  5.     size: carousel_list.length
  6.     });
  7. });

я так понимаю у вас и VK.api("getProfiles") и запуск карусели выполняются после того, как документ построен, то есть одновременно, вот и выходит, что карусель строится раньше чем от ВК приходят данные.

Честно сказать я плохо понимаю порядок запуска функций яваскрипта, но конкретно в этой ситуации - VK.init и все внутренние функции идут просто в .js файле, без window.onload или document.ready
http://sevenlines.com.ua - разработка и продвижение сайтов
Serge
WEB Team
WEB Team
 
Автор темы
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

Re: Лента друзей

Сообщение Alazaur » 12 июн 2012, 23:26

В общих чертах я полагаю должно быть приблизительно так:
  1.  
  2. function carousel_itemLoadCallback(carousel, state)
  3. {
  4.     for (var i = carousel.first; i <= carousel.last; i++)
  5.     {
  6.         if (carousel.has(i))
  7.         {
  8.             continue;
  9.         }
  10.         if (i > carousel_list.length)
  11.         {
  12.             break;
  13.         }
  14.         carousel.add(i, carousel_list[i-1]);
  15.     }
  16. };
  17.  
  18. jQuery(document).ready(function() {
  19.     VK.api("getProfiles", {"uids":str, "fields":"uid, first_name, last_name, photo"}, function(fr_info){
  20.         for(var j = 0; j < fr_info.response.length; j++)
  21.         {
  22.             var str = '<li><img src="' + fr_info.response[j].photo + '" /></li>';
  23.             carousel_list.push(str);
  24.         }
  25.         jQuery("#fr_carousel").jcarousel({
  26.             scroll: 1,
  27.             itemLoadCallback: {onBeforeAnimation: carousel_itemLoadCallback},
  28.             size: carousel_list.length
  29.         });
  30.     });
  31. });
  32.  

Это то что касаемо очередности выполнения. А правилен ли ваш код вообще я не знаю, никогда не видел в глаза эту карусель :D
Alazaur
Разработчик
Разработчик
 
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25
Благодарил (а): 24 раз.
Поблагодарили: 121 раз.

Re: Лента друзей

Сообщение Serge » 13 июн 2012, 14:59

Alazaur, так и делал, но все равно спасибо.
Вычленил ошибку - она крылась в css. Карусельку сделал, все работает, тему можно закрывать:)
Если у кого есть вопросы по ней - отвечу в личке.
http://sevenlines.com.ua - разработка и продвижение сайтов
Serge
WEB Team
WEB Team
 
Автор темы
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.


Вернуться в Корзина



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron