2012-06-26 2 views
1

Я ищу решение для отображения множества элементов (10 тысяч) в виде списка в Yii. Я хотел бы иметь возможность отображать их в постоянно прокручиваемом списке. Вот уловка, когда пользователь прокручивается мимо конца списка, я хочу, чтобы новые данные заменяли данные, которые он просто прокрутил. Это похоже на музыку google, если у вас очень длинный список воспроизведения.Бесконечная прокрутка в Yii

Я посмотрел на Yiinfinite-скроллер, но он добавляет в конец списка, создавая очень длинный список, который убивает мое использование памяти.

Благодаря

ответ

3

Его действительность на самом деле легко реализовать бесконечный свиток в несколько строк Дж.С. и с помощью JQuery. Измерьте высоту DIV контента и, как страница прокручивается вычесть разницу прокрутки с высоты дивы тогда, когда он ударил количество мин сделать запрос для получения дополнительного содержания и сброс счетчика высоты и повторить:

<script type="text/javascript"> 
var contentHeight = 4000,; 
var pageHeight = document.documentElement.clientHeight; 
var scrollPosition; 
var n = 1; 

function scroll(){ 
    if(navigator.appName == "Microsoft Internet Explorer") 
     scrollPosition = document.documentElement.scrollTop; 
    else 
     scrollPosition = window.pageYOffset; 

    if((contentHeight - pageHeight - scrollPosition) < 500){ 
     $.ajax({ url: "./yourAPI/?next="+n, cache: false, 
     success: function(data){ 
      //append result 
      $('#infscroll').append('<div>'+data.result+'</div>'); 
     }, dataType: "json"}); 
     n += 1; 
     contentHeight += 4000; 
    } 
} 

$(document).scroll(function(){ 
    setInterval('scroll();', 250); 
}); 
</script> 

<div id="infscroll"></div> 
+0

Это может быть хорошая идея заменить на «

'+$('#infscroll').html()+data.result+'
», если вы хотите, чтобы предыдущие результаты отображались. – crafter

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