192 lines
3.3 KiB
Markdown
192 lines
3.3 KiB
Markdown
|
# cc-pullScroolView 该组件免费,但版权问题需关注“前端组件开发”公众号获取授权
|
|||
|
|
|||
|
#### 使用方法
|
|||
|
```使用方法
|
|||
|
|
|||
|
<!-- ref:唯一ref pullDown:下拉刷新事件 上拉加载方法写在生命周期onReachBottom方法内 -->
|
|||
|
<cc-pullScroolView class="pullScrollView" ref="pullScroll" :pullDown="pullDown">
|
|||
|
</cc-pullScroolView>
|
|||
|
|
|||
|
<!-- 注意: 上拉加载方法写在onReachBottom方法内 -->
|
|||
|
onReachBottom() {
|
|||
|
// 数据全部加载完
|
|||
|
if (this.curPageNum * 10 >= this.totalNum) {
|
|||
|
|
|||
|
} else {
|
|||
|
|
|||
|
// 显示加载中
|
|||
|
this.$refs.pullScroll.showUpLoading();
|
|||
|
this.curPageNum++;
|
|||
|
this.requestData();
|
|||
|
}
|
|||
|
|
|||
|
},
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
#### HTML代码实现部分
|
|||
|
```html
|
|||
|
<template>
|
|||
|
<view class="content">
|
|||
|
|
|||
|
<div class="mui-content-padded">
|
|||
|
|
|||
|
<!-- ref:唯一ref pullDown:下拉刷新事件 onReachBottom:上拉加载事件 -->
|
|||
|
<cc-pullScroolView class="pullScrollView" ref="pullScroll" :back-top="true" :pullDown="pullDown">
|
|||
|
|
|||
|
<!-- 列表组件 -->
|
|||
|
<CCBProjectList :productList="projectList" @click="goProDetail"></CCBProjectList>
|
|||
|
|
|||
|
</cc-pullScroolView>
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
|
|||
|
<script>
|
|||
|
import CCBProjectList from '../../components/ccPageView/CCProjectList.vue';
|
|||
|
|
|||
|
export default {
|
|||
|
components: {
|
|||
|
|
|||
|
CCBProjectList,
|
|||
|
|
|||
|
|
|||
|
},
|
|||
|
data() {
|
|||
|
return {
|
|||
|
// 列表总数量
|
|||
|
totalNum: 60,
|
|||
|
// 页码 默认1开始
|
|||
|
curPageNum: 1,
|
|||
|
|
|||
|
// 列表数组
|
|||
|
projectList: []
|
|||
|
}
|
|||
|
},
|
|||
|
onLoad() {
|
|||
|
|
|||
|
// 页面刷新方法 会自动调用pulldown一次
|
|||
|
this.pageRefresh();
|
|||
|
},
|
|||
|
// 上拉加载
|
|||
|
onReachBottom() {
|
|||
|
// 数据全部加载完
|
|||
|
if (this.curPageNum * 10 >= this.totalNum) {
|
|||
|
|
|||
|
} else {
|
|||
|
|
|||
|
// 显示加载中
|
|||
|
this.$refs.pullScroll.showUpLoading();
|
|||
|
this.curPageNum++;
|
|||
|
this.requestData();
|
|||
|
}
|
|||
|
|
|||
|
},
|
|||
|
|
|||
|
methods: {
|
|||
|
|
|||
|
pageRefresh() {
|
|||
|
let myThis = this;
|
|||
|
this.$nextTick(() => {
|
|||
|
|
|||
|
myThis.$refs.pullScroll.refresh();
|
|||
|
|
|||
|
|
|||
|
|
|||
|
});
|
|||
|
},
|
|||
|
// 下拉刷新
|
|||
|
pullDown(pullScroll) {
|
|||
|
|
|||
|
console.log('下拉刷新');
|
|||
|
this.projectList = [];
|
|||
|
this.curPageNum = 1;
|
|||
|
setTimeout(() => {
|
|||
|
this.requestData(pullScroll);
|
|||
|
}, 300);
|
|||
|
|
|||
|
},
|
|||
|
|
|||
|
|
|||
|
// 列表条目点击事件
|
|||
|
goProDetail(item) {
|
|||
|
|
|||
|
},
|
|||
|
|
|||
|
|
|||
|
requestData() {
|
|||
|
|
|||
|
// 模拟请求参数设置
|
|||
|
let reqData = {
|
|||
|
|
|||
|
'area': '',
|
|||
|
"pageSize": 10,
|
|||
|
"pageNo": this.curPageNum
|
|||
|
}
|
|||
|
|
|||
|
let myThis = this;
|
|||
|
setTimeout(function() {
|
|||
|
|
|||
|
|
|||
|
// 模拟请求接口
|
|||
|
for (let i = 0; i < 10; i++) {
|
|||
|
|
|||
|
myThis.projectList.push({
|
|||
|
'proName': '产品名称' + i,
|
|||
|
'proUnit': '公司名称' + i,
|
|||
|
'area': '广东省',
|
|||
|
'proType': '省级项目',
|
|||
|
'stage': '已开工',
|
|||
|
'id': 10 * (myThis.curPageNum + i) + myThis.curPageNum + ''
|
|||
|
});
|
|||
|
}
|
|||
|
// 列表总数量
|
|||
|
myThis.totalNum = 60;
|
|||
|
// 如果是最后一页
|
|||
|
if (myThis.curPageNum * 10 >= myThis.totalNum) {
|
|||
|
myThis.$refs.pullScroll.finish();
|
|||
|
|
|||
|
} else {
|
|||
|
// 不是最后一页
|
|||
|
myThis.$refs.pullScroll.success();
|
|||
|
}
|
|||
|
|
|||
|
}, 600);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
|
|||
|
<style>
|
|||
|
page {
|
|||
|
|
|||
|
background-color: #f2f2f2;
|
|||
|
}
|
|||
|
|
|||
|
.content {
|
|||
|
display: flex;
|
|||
|
flex-direction: column;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
.mui-content-padded {
|
|||
|
margin: 0px 14px;
|
|||
|
/* background-color: #ffffff; */
|
|||
|
}
|
|||
|
|
|||
|
.pullScrollView {
|
|||
|
display: flex;
|
|||
|
flex-direction: column;
|
|||
|
|
|||
|
}
|
|||
|
</style>
|
|||
|
```
|