讲到瀑布流分页有一个方法一定是要用到的 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. [python]MS17-010自动化扫描脚本

    一种是3gstudent分享的调用Nsa泄露的smbtouch-1.1.1.exe实现验证,另一种是参考巡风的poc.这里整合学习了下两种不同的方法. import os import fileinp ...

  2. [Xcode 实际操作]九、实用进阶-(26)对Storyboard(故事版)中的文字标签(Label)进行本地化处理

    目录:[Swift]Xcode实际操作 对Storyboard(故事版)中的文字标签(Label)进行本地化处理. 点击项目名称[DemoApp]进入项目信息面板. [Build Setting]-& ...

  3. 理解:return、break、continue区别

    1.return:结束该方法的执行 2.continue:结束当前流程中的continue一下的代码,如果是for循环会再次执行下一个条件 3.break:完全终止当前执行流程,如果是for循环,那么 ...

  4. PJzhang:最基本的正则表达式实例

    猫宁!!! 参考链接: https://www.cnblogs.com/fozero/p/7868687.html http://tool.oschina.net/regex/# http://too ...

  5. 执行gulp build报错

    问题与分析 在执行gulp build报错如下: D:\coding\Resume\Resumes>gulp build gulp build[5628]: src\node_contextif ...

  6. PostgreSQL - 用psql 运行SQL文件

    对于预先写好的SQL文件,比如/home/user1/updateMyData.sql, 可以有两种方式来运行这个SQL文件. 方式一:连接db后执行SQL文件 首先通过psql连接到对应的db: p ...

  7. VLAN-1-VLAN配置

    f0/12和f0/24不在列表中,因为它们动态地成为trunk,支持多个vlan       “unsup”意为这个2950交换机不支持FDDI和TR       首先 switchport mode ...

  8. queue模块

    queue队列 :使用import queue,用法与进程Queue一样 queue is especially useful in threaded programming when informa ...

  9. TensorFlow 模型保存/载入

    我们在上线使用一个算法模型的时候,首先必须将已经训练好的模型保存下来.tensorflow保存模型的方式与sklearn不太一样,sklearn很直接,一个sklearn.externals.jobl ...

  10. Elasticsearch之安装

    elasticsearch需要java8以上支持 java -version 二进制文件下载 www.elastic.co/downloads tar安装示例 1.下载tar文件 curl -L -O ...