AngularJs实现无限滚动加载

ngInfiniteScroll是angular的一个扩展指令,它能够实现页面的无限滚动加载功能,

要实现这个功能,可以通过https://github.com/sroze/ngInfiniteScroll这个第三方控件来实现。步骤如下:

1. 下载ng-infinite-scroll.js程序http://sroze.github.io/ngInfiniteScroll/ 目前版本是1.0.0

2. 如果你是用的jQuery2.0以上版本,还需要修改ng-infinite-scroll.js程序,将所有的将所有的$window.xxx改为$(window).xxx, elem.xxx改为$(elem).xxx

3. 在HTML中引入script

<script type='text/javascript' src='path/to/jquery.min.js'></script>
<script type='text/javascript' src='path/to/angular.min.js'></script>
<script type='text/javascript' src='path/to/ng-infinite-scroll.min.js'></script>

4. HTML示例代码如下:

<div ng-controller='PostListController'>
    <div infinite-scroll='demo.nextPage()' infinite-scroll-disabled='demo.busy' infinite-scroll-distance='1'>
        <div ng-repeat='item in demo.items'>
            <p>
                <input type="hidden" value="{{item.PostId}}" />
                <label>{{item.WriterName}}</label>
                <label>{{item.WriterMail}}</label>
                <label>{{item.WreckerName}}</label>
                <label>{{item.StartDate}}</label>
                <label>{{item.Location}}</label>
                <label>{{item.Story}}</label>
            </p>
        </div>
        <div ng-show='demo.busy'>Loading data...</div>
    </div>
</div>

5. PostListController.js代码如下:

var ftitAppModule = angular.module('ftitApp', ['infinite-scroll']);

ftitAppModule.controller('PostListController', 
    function ($scope, Demo) {
        $scope.demo = new Demo();
});

// 创建后台数据交互工厂
ftitAppModule.factory('Demo', function ($http) {
    var Demo = function () {
        this.items = [];
        this.busy = false;
        this.after = '';
        this.page = 0;
    };
    
    Demo.prototype.nextPage = function () {
        if (this.busy) return;
        this.busy = true;
        
        var url = "http://192.168.3.95:7002/api/post/nextpage?id=" + this.page + "&callback=JSON_CALLBACK";
        $http.jsonp(url).success(function (data) {
            var items = data;
            for (var i = 0; i < items.length; i++) {
                this.items.push(items[i]);
            }
            this.after = "t3_" + this.items[this.items.length - 1].id;
            this.busy = false;
            this.page += 1;
        }.bind(this));
    };

    return Demo;
});

这样就实现了页面拖动到底后,从服务器自动加载数据的功能。

三、指令解释:
    1. infinite-scroll:
      是主要加载数据用的,也就是说,当你下拉到底部的时候就会触发这个方法去加载数据。

    2. infinite-scroll-disabled:
      这个值默认是false(Boolean类型), 默认关闭 “停止滚动” 这个功能.
      当值为true的时候,infinite-scroll=”vm.nextPage()”中的vm.nextPage()方法将不会被调用。
      翻页到底部的时候需要给一个 infinite-scroll-disabled=’{{scroll_switch}}’ 变量改变 disable的值。

    3. infinite-scroll-distance:
      这个值意思大致就是间隔多少页,比如说:如果该值为“0”的话,那么,当页面滚动到底部的时候才开始去加载数据。
      如果该值为“1”的话,那么,当页面滚动到离底部还剩“1”页的时候,它就会去加载了。当然第一次访问页面的时候(还没开始滚动内容),它会先加载两页内容。


注:本文是转载一博友的文章,感觉对自己有所帮助就留下来了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值