我正在寻找一种在 Yii 的列表视图中显示许多项目(成千上万)的解决方案。我希望能够将它们显示在一个可连续滚动的列表中。这是一个问题,当用户滚动到列表末尾时,我希望新数据替换他刚刚滚动传递的数据。有点像谷歌音乐,如果你有一个很长的播放列表。
我查看了 Yiinfinite-scroller,但它附加到列表的末尾,形成了一个非常长的列表,这正在扼杀我的内存使用。
谢谢
我正在寻找一种在 Yii 的列表视图中显示许多项目(成千上万)的解决方案。我希望能够将它们显示在一个可连续滚动的列表中。这是一个问题,当用户滚动到列表末尾时,我希望新数据替换他刚刚滚动传递的数据。有点像谷歌音乐,如果你有一个很长的播放列表。
我查看了 Yiinfinite-scroller,但它附加到列表的末尾,形成了一个非常长的列表,这正在扼杀我的内存使用。
谢谢
它实际上很容易在几行 js 和 jQuery 的帮助下实现无限滚动。测量内容 div 的高度,当页面滚动时,从 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>