template中实现上拉加载,下拉刷新效果。

关于template中渲染数据,当页面的数据比较多的时 候,需要用到一个上拉加载,下拉刷新这个操作

可以结合 dropload 的使用。

1.需要在gethub中下载dropload的 css 样式和 js 代码。 https://github.com/ximan/dropload

<link rel="stylesheet" type="text/css" href="${req.contextPath}/css/dropload.css">
 
<script src="${req.contextPath}/js/dropload.js"></script>

2.注意引入js的顺序,要引到用的前面。
3.官方的js代码。

$('.element').dropload({
    scrollArea : window,
    loadDownFn : function(me){
        $.ajax({
            type: 'GET',
            url: 'json/more.json',
            dataType: 'json',
            success: function(data){
                alert(data);
                // 每次数据加载完,必须重置
                me.resetload();
            },
            error: function(xhr, type){
                alert('Ajax error!');
                // 即使加载出错,也得重置
                me.resetload();
            }
        });
    }
});

4.我的 js 代码

$('body').dropload({
    scrollArea: window,
    domUp: {
        domClass: 'dropload-up',
        domRefresh: '<div class="dropload-refresh">↓下拉刷新</div>',
        domUpdate: '<div class="dropload-update">↑释放更新</div>',
        domLoad: '<div class="dropload-load"><span class="loading"></span>加载中...</div>',
        domNoData: '<div class="dropload-noData">没有更多</div>'
    },
    domDown: {
        domClass: 'dropload-down',
        domRefresh: '<div class="dropload-refresh">↑上拉加载更多</div>',
        domLoad: '<div class="dropload-load"><span class="loading"></span>加载中...</div>',
        domNoData: '<div class="dropload-noData">没有更多</div>'
    },
    loadDownFn: function (me) {
        // 每次数据加载完,必须重置
        reloadData(me);
    }
});

function reloadData(me) {
    data.indexNo++;
    $.post("../../../order/list", data, function (res) {
        // console.log(indexNo)
        if (res.code == '0000') {
            var pageCount = res.data.pageCount;
            if (data.indexNo > pageCount) {
                console.log("没有更多了");
                data.indexNo--;
                me.noData();
                // 每次数据加载完,必须重置
                me.resetload();
                return;
            }
            var distanceArry = [];
            $.each(res.data.dataList, function (i, v) {
                var lon = v.courseInfoDetail.orgInfo.longitude;
                var lan = v.courseInfoDetail.orgInfo.latitude;
                var orgName = v.courseInfoDetail.orgInfo.name;
                var shareDTO = v.shareDTO;
                var orderId = v.id;
                $(".listHtml").append(template("info-tpl", v));

                distanceArry.push('.distance' + orderId + '-' + lon + '-' + lan + '-' + orgName);
                // console.log(distanceArry);
                //点击地图跳转定位
                $(".MapDistance" + orderId).click(function (res) {
                    window.location.href = 'https://uri.amap.com/marker?position=' + lon + ',' + lan + '&name=' + orgName;
                });
                //点击跳转到不同的页面
                if (v.orderStatus == 7) {
                    $(".statuShow").click(function () {
                        window.location.href = '../../../h5/share/open/' + shareDTO.id;
                    })
                } else if (v.orderStatus == 1) {
                    $(".statuShow").click(function () {
                        window.location.href = '../../../h5/share/open/' + shareDTO.id;
                    })
                } else if (v.orderStatus == 9) {
                    $(".statuShow").click(function () {
                        if (v.shareDTO) {
                            window.location.href = '../../../h5/share/open/' + shareDTO.id;
                        }
                    })
                } else if (v.orderStatus == 7 && userOpenGroup) {
                    $(".statuShow").click(function () {
                        window.location.href = '../../../h5/order/detail/' + v.id;
                    })
                } else if (v.orderStatus == 6) {
                    $(".statuShow").click(function () {
                        window.location.href = '../../../h5/share/open/' + shareDTO.id;
                    })
                } else if (v.orderStatus == 1 || v.orderStatus == 2 || v.orderStatus == 3) {
                    $(".statuShow").click(function () {
                        window.location.href = '../../../h5/share/open/' + shareDTO.id;
                    })
                }
            });
            //距离
            if (distanceArry) {
                var distanceInterval = setInterval(function () {
                    console.log(distanceInterval);
                    lonSelf = $("#lon").val();
                    lanSelf = $("#lan").val();
                    if (lonSelf && lanSelf) {
                        for (var i in distanceArry) {
                            var iArry = distanceArry[i].split("-");
                            // console.log(iArry)
                            if (iArry) {
                                locatiuon(iArry[1], iArry[2], lonSelf, lanSelf, iArry[3], $(iArry[0]));
                            }
                        }
                        clearInterval(distanceInterval);
                    }
                }, 500)
            }
            me.resetload();
        } else {
            if(login()){

            }
        }
    });
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在uniapp,可以使用`uni-scroll-view`组件实现上拉加载下拉刷新。 1. 首先,在页面引入`uni-scroll-view`组件。 ```html <template> <uni-scroll-view ref="scroll-view" class="scroll-view" :scroll-with-animation="true" @scrolltolower="loadMore" @scrolltoupper="refresh"> <!--内容区--> </uni-scroll-view> </template> ``` 2. 在`script`定义`loadMore`和`refresh`方法。 ```javascript <script> export default { methods: { // 加载更多 loadMore() { // TODO: 加载更多的逻辑 }, // 下拉刷新 refresh() { // TODO: 下拉刷新的逻辑 } } } </script> ``` 3. 在`loadMore`方法,可以通过调用`uni.request`方法向后端请求更多数据,并将新数据追加到原有数据的末尾。同时,可以设置一个`loading`变量,在数据请求完成之前显示一个加载提示。 ```javascript // 加载更多 loadMore() { // 如果正在加载数据,则返回 if (this.loading) return // 显示加载提示 this.loading = true uni.request({ url: 'https://xxx.com/api/list', data: { page: this.page + 1 }, success: res => { // 将新数据追加到原有数据的末尾 this.list = this.list.concat(res.data.list) // 更新页码 this.page++ // 隐藏加载提示 this.loading = false }, fail: res => { // 隐藏加载提示 this.loading = false } }) } ``` 4. 在`refresh`方法,可以通过调用`uni.request`方法重新请求数据,并将新数据覆盖原有数据。同时,可以设置一个`refreshing`变量,在数据请求完成之前显示一个刷新提示。 ```javascript // 下拉刷新 refresh() { // 如果正在刷新,则返回 if (this.refreshing) return // 显示刷新提示 this.refreshing = true uni.request({ url: 'https://xxx.com/api/list', data: { page: 1 }, success: res => { // 将新数据覆盖原有数据 this.list = res.data.list // 更新页码 this.page = 1 // 隐藏刷新提示 this.refreshing = false }, fail: res => { // 隐藏刷新提示 this.refreshing = false } }) } ``` 5. 最后,可以通过`uni-loading`组件和`uni-load-more`组件分别实现加载提示和加载更多提示。 ```html <template> <uni-scroll-view ref="scroll-view" class="scroll-view" :scroll-with-animation="true" @scrolltolower="loadMore" @scrolltoupper="refresh"> <!--内容区--> <uni-load-more :show="loading"> 加载... </uni-load-more> </uni-scroll-view> <uni-loading :show="refreshing" mode="pulling"> 正在刷新... </uni-loading> </template> ``` 这样,就可以在uniapp实现上拉加载下拉刷新了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值