angularjs 滚动加载更多数据

下面的例子只是为了简单记录怎么使用angularjs来实现滚动加载数据,具体的还是需要具体看待:

Javascript部分的controller

app.controller(‘AnalysizerCtrl‘, [‘$scope‘, ‘$timeout‘, ‘$window‘,
    function ($scope, $timeout, $window) {
            $scope.showData = false;
                $scope.isLoadingPIG = false;
                $scope.isLoadingUJ = false;
                $scope.isLoadingBoxSummary = false;
        
        	$scope.LoadingData = function (index) {
    		        $scope.showData = true;
    		    var pigHeight = $(".analysisContainer")[1].children[1].scrollHeight;
    		    var ujHeight = $(".analysisContainer")[1].children[2].scrollHeight;
    		    var boxSummaryHeight = $(".analysisContainer")[1].children[3].scrollHeight;

		        if (index == 0) {
			    //$scope.reLoadData = true;

			    pigHeight = 0;
			    ujHeight = 0;

			    $scope.gridOptions.data = null;
		        }

		        var showSummaryBox = function () {
			    $scope.isLoadingBoxSummary = false;
		        }
		        var showUj = function () {
			    $scope.isLoadingUJ = false;
			    //$scope.isLoadingSummaryBox = true;
			    //$timeout(showSummaryBox, 1000);
		        }
		        var showPig = function () {
			        $scope.isLoadingPIG = false;
			    //$scope.isLoadingUJ = false;
			    //$timeout(showUj, 10000);
		        }

		        if (pigHeight == 0) {
			    $scope.isLoadingPIG = true;

			    $timeout(showPig, 1000);
		        } else if (ujHeight == 0) {
			    $scope.isLoadingUJ = true;

			    $timeout(showUj, 1000);
		        } else if (boxSummaryHeight == 0) {
			    $scope.isLoadingBoxSummary = true;

			    $timeout(showSummaryBox, 1000);
		        }
		};
	}]
).directive(‘whenScrollEnd‘, function () {
        return function (scope, elm, attr) {
            var pageWindow = $(this);
            pageWindow.bind(‘scroll‘, function (et, ed, pb) {
                var winScrollTop = pageWindow.scrollTop();
                var winHeight = pageWindow.height();
                var maxScrollHeight = $(".analysisContainer")[1].scrollHeight;
                if ((winScrollTop + winHeight) > maxScrollHeight) {
                    scope.$apply(attr.whenScrollEnd);
                }
            });
        }
    });

下面是HTML部分:

<div class="analysisContainer" ng-show="showData" when-scroll-end="LoadingData()">
	<div id="b" ng-show="isLoadingPIG" style="width: 100%; text-align: center; z-index: 1">
		<h6 class="loading">
			<img src="~/Content/Images/loading2.gif" />
			Loading Win & Convert data...
		</h6>
	</div>
	<div id="a" ng-show="!isLoadingPIG">
		<img src="~/2016-03-16_152323.png" />
	</div>
	<div ng-show="!isLoadingUJ">
		<img src="~/2016-03-16_153347.png" />
	</div>
	<div ng-show="!isLoadingBoxSummary">
		<img src="~/2016-03-16_153404.png" />
	</div>
</div>

重要的部分是指令(directive)和滚动时要加载数据的部分

时间: 2024-08-28 10:54:00

angularjs 滚动加载更多数据的相关文章

下拉滚动加载更多数据

简单地实现一个下拉滚动时加载更多数据的效果.这种效果经常在手机端.瀑布流时看到 1 KISSY.add('load',function(S,Core,IO,XTemplate){ 2 var $ = S.all, D = S.DOM, E = S.Event; 3 var API = { 4 'query':'query.do' 5 }; 6 var tpl = '{{#each result}}'+ 7 '<tr>'+ 8 '<td><input type="ch

js防抖和节流优化浏览器滚动条滚动到最下面时加载更多数据

防抖和节流,主要是用来防止过于平凡的执行某个操作,如浏览器窗口变化执行某个操作,监听某个input输入框keyup变化,瀑布流布局时Y轴滚动,图片加载. js函数的防抖 经过一段事件才执行某个操作,如果时间内又执行了该操作则延长时间重新开始计算 /* 不做处理input触发keyup事件 */ /* 输入快的话会出现输出结果多次重复 */ window.onload = function () { let obj = document.getElementById('input') obj.ad

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件/库 一提到移动端的下拉刷新上拉翻页,你可能就会想到iScroll插件,没错iScroll是一个高性能,资源占用少,无依赖,多平台的javascript滚动插件.iScroll不仅仅是 滚动.它可以处理任何需要与用户进行移动交互的元素.在你的项目中包含仅仅4kb大小的iScroll,你的项目便拥有了滚动,缩放,平移,无限滚动,视差滚动,旋转功能.iScroll的强大毋庸置疑,本人也非常欢迎大家使用iScr

iOS:详解MJRefresh刷新加载更多数据的第三方库

原文链接:http://www.ios122.com/2015/08/mjrefresh/ 简介 MJRefresh这个第三方库是李明杰老师的杰作,这个框架帮助我们程序员减轻了超级多的麻烦,节约了开发时间,提高了开发效率.由于目前能力有限,尚不能自己写一套框架,所以就先膜拜和看明白大牛的框架了. 用于为应用添加常用的上拉加载更多与下拉刷新效果,适用 UIScrollView . UITableView . UICollectionView . UIWebView. gtihub上的地址:http

ASP.NET仿新浪微博下拉加载更多数据瀑布流效果

闲来无事,琢磨着写点东西.貌似页面下拉加载数据,瀑布流的效果很火,各个网站都能见到各式各样的展示效果,原理大同小异.于是乎,决定自己写一写这个效果,希望能给比我还菜的菜鸟们一点参考价值. 在开始之前,先把实现的基本原理说一下.当夜幕下拉到底部的时候,js可以判断滚动条的位置,到达底部触发js方法,执行jquery的ajax方法,向后台一般处理程序夜幕ashx文件请求数据源,得到json格式的数据源.然后,遍历json数据源,拼接一个li标签,再填充到页面上去. 首先,我们来做个简单的html页面

基于 Vue.js 的移动端组件库mint-ui实现无限滚动加载更多

通过多次爬坑,发现了这些监听滚动来加载更多的组件的共同点, 因为这些加载更多的方法是绑定在需要加载更多的内容的元素上的, 所以是进入页面则直接触发一次,当监听到滚动事件之后,继续加载更多, 所以对于无限滚动加载不需要写首次载入列表的函数, 代码如下: html: //父组件 <div v-infinite-scroll="loadMore" infinite-scroll-disabled="loading" infinite-scroll-distance=

平滑的下拉加载更多数据

平滑的下拉加载更多地数据,例如下拉加载更多聊天记录,只要重写UITableView的setContentSize方法就可以实现. - (void)setContentSize:(CGSize)contentSize { if (!CGSizeEqualToSize(self.contentSize, CGSizeZero)) { if (contentSize.height > self.contentSize.height) { CGPoint offset = self.contentOff

微信小程序 - (下拉)加载更多数据

注意和后端配合就行了,前端也只能把数据拼接起来! 无论是下拉加载还是加载更多,一样的道理! 注意首次加载传递参数 注意每次加载数据数 wxml <view class='table-rank'> <view class='tables center' wx:for="{{ranklist}}" wx:for-index="idx" wx:key="prototype"> <view class='stage-rank

滚动加载更多

/** * 异步加载更多 * create by tujia @2016.10.19 */ function load_more(id,no_more){ var _id = id || 'lists'; var _no_more = no_more || '<li style="line-height: 4rem; text-align: center; font-size: 1rem; color: #717171;">没有更多啦</li>'; var dH