更新记录

3.2.0(2024-01-07)

组件优化

3.2(2023-10-28)

适配微信小程序

3.1.0(2023-07-27)

组件说明优化

查看更多

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.8.0 app-vue app-nvue
钉钉小程序 快手小程序 飞书小程序 京东小程序
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari

我的技术微信公众号

查看更多前端组件和框架信息,请关注我的技术微信公众号【前端组件开发】

图片

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代码实现部分

<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>

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问