您的位置:首页 > 移动开发

结合mint-ui移动端下拉加载实践总结

2017-08-10 18:19 645 查看
在使用vue做一个h5项目的时候,需要上拉分页加载,所以在实践中总结了一下使用方法:

1.npm i mint-ui -S
2.main.js中引入import 'mint-ui/lib/style.css'
3.以下是代码结构部分:
<template>
<div class="main-body" :style="{'-webkit-overflow-scrolling': scrollMode}">
<v-loadmore :bottom-method="loadBottom" :bottom-all-loaded="allLoaded" :auto-fill="false" ref="loadmore">
<ul class="list">

<li v-for="(item, index) in proCopyright">
<div>{{item.FZD_ZPMC}}</div>
</li>

</ul>

</v-loadmore>

</div>
</template>

<script>
import {Loadmore} from 'mint-ui';
export default {
components:{
'v-loadmore':Loadmore,
},
data () {
return {
pageNo:1,
pageSize:50,
proCopyright:[],
allLoaded: false, //是否可以上拉属性,false可以上拉,true为禁止上拉,就是不让往上划加载数据了
scrollMode:"auto", //移动端弹性滚动效果,touch为弹性滚动,auto是非弹性滚动
totalpage:0,
loading:false,
bottomText: '',
}
},
mounted(){
this.loadPageList();  //初次访问查询列表
},
methods:{
loadBottom:function() {
// 上拉加载
this.more();// 上拉触发的分页查询
this.$refs.loadmore.onBottomLoaded();// 固定方法,查询完要调用一次,用于重新定位
},
loadPageList:function (){
// 查询数据
this.axios.get('/copyright?key='+ encodeURIComponent('公司名称')+"&mask=001"+"&page="+this.pageNo+"&size="+this.pageSize).then(res =>{
console.log(res);
this.proCopyright = res.data.result.PRODUCTCOPYRIGHT;
this.totalpage = Math.ceil(res.data.result.COUNTOFPRODUCTCOPYRIGHT/this.pageSize);
if(this.totalpage == 1){
this.allLoaded = true;
}
this.$nextTick(function () {
// 是否还有下一页,加个方法判断,没有下一页要禁止上拉
this.scrollMode = "touch";
this.isHaveMore();
});
});
},
more:function (){
// 分页查询
if(this.totalpage == 1){
this.pageNo = 1;
this.allLoaded = true;
}else{
this.pageNo = parseInt(this.pageNo) + 1;
this.allLoaded = false;
}

console.log(this.pageNo);
this.axios.get('/copyright?key='+ encodeURIComponent('公司名称')+"&mask=001"+"&page="+this.pageNo+"&size="+this.pageSize).then(res=>{
this.proCopyright = this.proCopyright.concat(res.data.result.PRODUCTCOPYRIGHT);
console.log(this.proCopyright);
this.isHaveMore();
});
},
isHaveMore:function(){
// 是否还有下一页,如果没有就禁止上拉刷新
//this.allLoaded = false; //true是禁止上拉加载
if(this.pageNo == this.totalpage){
this.allLoaded = true;
}
}
},
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
li{
padding:30px 0;
background-color: #ccc;
margin-bottom:20px;
}
</style>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vue