讲到瀑布流分页有一个方法一定是要用到的 pullToRefresh(),或者说还有一种代码量比较少,但是看起来不怎么高端的

这个也没什么好解释的,想了解的可以去百度一下

下面上代码

<div id="main" class="content"
style="background-color: #FFFFFF; width: 100%;height:100%;position: absolute;overflow: hidden;">
<div class="list-main-mian weui-form-preview infinite weui-pull-to-refresh" id="listwrap"
style="height:100%; margin-top: 1px;overflow:auto; z-index: 1">
<!--下拉刷新-->
<div class="weui-pull-to-refresh__layer" hidden id="downRefresh">
<div class="weui-pull-to-refresh__arrow"></div>
<div class="weui-pull-to-refresh__preloader"></div>
</div>
<div class="weui-form-preview" id="Tolist">
<!--内容展示区域-->
<div id="app" v-cloak>
<!--状态栏-->
<div class="nav" >
<a href="${ctx}/mobile/activity/home.jsp">
<button><img src="${ctx}/mobile/activity/img/Arrow.png"/></button>
</a>
<span>活动列表</span>
<div> </div>
</div>
<button class="See popup-opu" style="border: 0px;"></button>
<a :href="toActivityDetail(item.activityEntity.recno)" v-for="(item,index) in edRecomList">
<div class="Result">
<div class="shop-img">
<img v-bind:src="getImages(item.activityEntity.themeImage)"/>
</div>
<div class="describe">
<div class="Price">
<span class="Trade-name">{{item.activityEntity.name}}</span>
<div class="fuzhu">
<div class="Price-address">
<div></div>
<span>{{item.activityEntity.address}}</span>
</div>
</div>
<span class="Number">
<span> {{item.activityEntity.count}}人参加</span>
</span>
<span class="price-time">{{formatDate(item.activityEntity.begdate)}}~{{formatDate(item.activityEntity.enddate)}}</span>
</div>
</div>
<li class="Dividing"></li>
<div :class="getClass(item.activityEntity.state)">{{['','发布','进行','暂停','结束'][item.activityEntity.state]}}</div>
</div>
</a>
<!-- <a @click="queryDate()" v-show="more"
class="weui-btn weui-btn_disabled weui-btn_default" style="margin-bottom: 60px;">加载更多</a> -->
<%--滚动--%>
<div id="scrollItem" style="height: 1px"></div>
</div>
</div>
<div id="bottomRefresh" class="weui-loadmore" style="margin-bottom: 64px">
<div id="bottomRefreshTip" style="text-align: center">
数据已全部加载
</div>
<div id="bottomRefreshContent" style="visibility: hidden">
<i class="weui-loading"></i>
<span class="weui-loadmore__tips">正在加载</span>
</div>
</div>
</div>
<a style="display:none" href="javascript:;" id="btn" title="回到顶部"></a>
</div>

接下来就是js代码

var bottomRefreshContent = $("#bottomRefreshContent");
var listWarp = $("#listwrap");
var bottomRefreshTip = $("#bottomRefreshTip");
var downRefresh = $("#downRefresh");
listWarp.pullToRefresh().on("pull-to-refresh", function () {
downRefresh.show();
vm.queryDate(function (data) {
downRefresh.hide();
listWarp.pullToRefreshDone(); // 重置下拉刷新
//重置数据为第一页
vm.edRecomList = data.result.rows
});
// }, 1000); });
var loading = false; //状态标记
listWarp.infinite(80).on("infinite", function () {
if (loading) return;
loading = true;
bottomRefreshContent.css("visibility", "visible");
bottomRefreshTip.css("visibility", "hidden");
vm.initPage.page = vm.initPage.page+1;
vm.param.page = vm.initPage;
// setTimeout(function () {
vm.queryDate(function () {
loading = false;
});
// }, 1000);
});
var vm = new Vue({
el: '#app',
data: {
edRecomList:[]
,more: false
,type:""
,initPage: {
page: 1,
pageSize: 8
}
,param: {}
,total:0
},
methods: {
queryDate: function(callFun){
var that = this;
//查询类型
this.param.type = this.type
$.post("${ctx}/mobile/activity/selectEdRecommendList.do",{"param":JSON.stringify(this.param)} ,function (data) {
if(data.state == 200){
if (data.result.rows.length > 0) {
that.edRecomList = that.edRecomList.concat(data.result.rows);
if (data.result.rows.length < that.initPage.pageSize) {
//隐藏加载中提示
bottomRefreshContent.css("visibility", "hidden");
bottomRefreshTip.css("visibility", "visible");
} else {
//隐藏数据全部完成提示
bottomRefreshContent.css("visibility", "visible");
bottomRefreshTip.css("visibility", "hidden");
}
if (callFun) {
callFun(data)
}
}else{
//隐藏加载中提示
bottomRefreshContent.css("visibility", "hidden");
bottomRefreshTip.css("visibility", "visible");
}
}
} ,'json');
}, },
mounted: function () {
this.param.page = this.initPage;
this.queryDate();
} })

方法二

 $(window).on("resize scroll", function () {
var windowHeight = $(window).height();//当前窗口的高度
var scrollTop = $(window).scrollTop();//当前滚动条从上往下滚动的距离
var docHeight = $(document).height(); //当前文档的高度
// console.log(scrollTop, windowHeight, docHeight);
//当 滚动条距底部的距离 + 滚动条滚动的距离 >= 文档的高度 - 窗口的高度
//换句话说:(滚动条滚动的距离 + 窗口的高度 = 文档的高度) 这个是基本的公式
if (scrollTop + windowHeight >= docHeight) {
//vm.nextActivityPage();
vm.getSelectData(4);
      //这里是执行的方法,在编写过程中,可能会遇到一个问题,就是数据会无故累加,
      //这里需要判断一下当前查询的数据是否是最后一页数据,如果是,就不再执行下一次分页
    }      
});

使用vue做移动端瀑布流分页的更多相关文章

  1. .Net/C#分库分表高性能O(1)瀑布流分页

    .Net/C#分库分表高性能O(1)瀑布流分页 框架介绍 依照惯例首先介绍本期主角:ShardingCore 一款ef-core下高性能.轻量级针对分表分库读写分离的解决方案,具有零依赖.零学习成本. ...

  2. 分享一个Vue实现图片水平瀑布流的插件

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.需求来源 今天碰到了一个需求,需要在页面里,用水平瀑布流的方式,将一些图片进行加载,这让我突然想起我很久以前写的一篇文章<JS两 ...

  3. 前端-PC端瀑布流【10张图】

    .HTML 利用封装的 jquerywaterfall.js 方法 完成 <!DOCTYPE html> <html lang="en"> <head ...

  4. vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多

    一.思路分析和效果图 用vue来实现一个瀑布流效果,加载网络图片,同时有下拉刷新和上拉加载更多功能效果.然后针对这几个效果的实现,捋下思路: 根据加载数据的顺序,依次追加标签展示效果: 选择哪种方式实 ...

  5. 炫酷的jquery瀑布流

    最近做了一个瀑布流效果,思路很简单 首先计算屏幕一行可以放多少个图片,然后在第二行开始,计算每一列的高度并取出最小值,将新图片加载在最小列高度下,如此循环,并且设定一个条件,当滑动到一定距离后,开始重 ...

  6. vue.js移动端配置flexible.js

    前言 最近在用vue做移动端项目,网上找了一些移动端适配的方案,个人觉得手淘团队flexible.js还是比较容易上手,在这里做下总结. 主体 flexible.js适配方案采用rem布局,根据屏幕分 ...

  7. css3多列布局瀑布流加载样式

    看了一些网站的瀑布流加载,正好看到css3的多列属性,尝试着写了一个css做布局的瀑布流. 直接上代码: <!DOCTYPE html> <html lang="en&qu ...

  8. Masonry+Infinite-Scroll实现无刷新无分页完美瀑布流(转)

    一.Masonry 是基于Jquery插件,用于对CSS布局的可移动层进行重新布局.Masonry愿意石工,可以这样形象的理解,页面上很多大小不一的移动层可以想象成散乱的石头,经过Masonry这个石 ...

  9. vue.js实现瀑布流之vue-waterfall-easy

    想必大家应该很多都已经习惯了jquery的DOM操作,jquery的瀑布流实现起来也很容易. 但是,随着时代的发展,随着时代的进步..... 算了算了,扯远了,既然能找到这儿来,肯定是在vue.js上 ...

随机推荐

  1. C++虚继承作用

    C++虚继承可以防止多重继承产生的二义性问题. 虚继承,就是在被继承的类前面加上virtual关键字,这时被继承的类称为虚基类,如下面代码中的base类.虚继承在多重继承的时可以防止二义性. clas ...

  2. vue中引入公共方法并使用

    test.js文件(公共js文件) function myFun() { console.log('this is my function') } export { myfun } // 2 expo ...

  3. [Xcode 实际操作]九、实用进阶-(30)为IAP(支付方式)内购项目添加测试账号,测试内购功能

    目录:[Swift]Xcode实际操作 本文将演示如何添加测试账号,以方便对内购功能进行测试. IAP,即in-App Purchase ,是一种智能移动终端应用程序付费的模式, 在苹果(Apple) ...

  4. 密码破解工具John the Ripper使用说明

    John the Ripper John 包描述 John the Ripper 既功能丰富又运行快速. 它在一个程序中结合了几种破解模式,并且可以根据您的特定需求进行全面地配置(你甚至可以使用支持C ...

  5. python selenium模块调用浏览器的时候出错

    python selenium模块使用出错,这个怎么改 因为不同版本更新不同步问题,浏览器都要另外下一个驱动.

  6. SQL COUNT DISTINCT 函数

    定义和用法 可以一同使用 DISTINCT 和 COUNT 关键词,来计算非重复结果的数目. 语法 SELECT COUNT(DISTINCT column(s)) FROM table 例子 注意: ...

  7. B.出题人的女装

    链接:https://ac.nowcoder.com/acm/contest/358/B 题意: 出题人早上起床就打算穿衣服,他有两箱衣服,因为懒,他在这两天只打算打开一个箱子. 两个箱子中一个有n件 ...

  8. Tourists Codeforces - 487E

    https://codeforces.com/contest/487/problem/E http://uoj.ac/problem/30 显然割点走过去就走不回来了...可以看出题目跟点双有关 有一 ...

  9. log4j打印错误日志输出 利用sql取出的值放在list集合中,集合中的字段类型为映射类类型

    public ServiceResult<List<KefuDetail>> MaxRespondtime(Date startDate,Date endDate, Strin ...

  10. c#学习系列之Application.StartupPath的用法(美女时钟的做法)

    Application.StartupPath是一个只读属性,是不可以设置的. Application.StarupPath获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称.既是Appli ...