使用Vant框架的组件van-pull-refresh搭配van-list和van-card完成上滑加载更多列表数据,下拉刷新当前列表数据(等同于翻页功能)

简介: 使用Vant框架的组件van-pull-refresh搭配van-list和van-card完成上滑加载更多列表数据,下拉刷新当前列表数据(等同于翻页功能)


<template>
    <div class="sg-page-body">
        <div class="sg-list">
            <van-pull-refresh v-model="pullLoading" @refresh="onPullRefresh" success-text="刷新成功">
                <van-list v-model="listLoading" @load="onLoadList" :finished="finishedList" finished-text="没有更多了">
                    <van-card v-for="(item,$index) in list" :key="$index">{{item.label}}</van-card>
                </van-list>
            </van-pull-refresh>
        </div>
    </div>
</template>
 
<script>
    export default {
        data() {
            return {
                list: [], //列表数组
                listLoading: false, //上滑列表加载(每一次上滑的时候)
                finishedList: false, //上滑列表加载完了所有数据(没有更多了)
                pullLoading: false, //下拉刷新加载动画
                start: 0, //从第1页开始
                limit: 10, //每页10条数据累加
                qylx: ""
            };
        },
        methods: {
            //下拉刷新列表■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
            onPullRefresh() {
                this.list = [];
                this.start = 0;
                this.finishedList = false;
                this.onLoadList();
            },
            //上滑加载列表________________________
            onLoadList() {
                // 异步更新数据
                if (this.finishedList) return;
                var data = {
                    start: this.start,
                    limit: this.limit,
                    qylx: this.qylx
                };
                this.$d.API_NAME(data, {
                    success: d => {
                        /*这里写代码*/
                        this.list = this.list.concat(d);
                        this.pullLoading = this.listLoading = false; // 加载和下拉状态结束
                        this.finishedList = d.length === 0; //上滑列表加载完了所有数据(没有更多了)
                    }
                });
                this.start++;
            }
            // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
        }
    };
</script>


相关文章
|
6天前
|
索引 Python
List(列表)
List(列表)。
14 4
|
1月前
|
测试技术 开发者 Python
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
在 Python 中,创建列表有两种方法:使用方括号 `[]` 和调用 `list()` 函数。虽然两者都能创建空列表,但 `[]` 更简洁、高效。性能测试显示,`[]` 的创建速度比 `list()` 快约一倍。此外,`list()` 可以接受一个可迭代对象作为参数并将其转换为列表,而 `[]` 则需要逐一列举元素。综上,`[]` 适合创建空列表,`list()` 适合转换可迭代对象。
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
|
19天前
|
JavaScript 数据管理 虚拟化
ArkTS List组件基础:掌握列表渲染与动态数据管理
在HarmonyOS应用开发中,ArkTS的List组件是构建动态列表视图的核心。本文深入探讨了List组件的基础,包括数据展示、性能优化和用户交互,以及如何在实际开发中应用这些知识,提升开发效率和应用性能。通过定义数据源、渲染列表项和动态数据管理,结合虚拟化列表和条件渲染等技术,帮助开发者构建高效、响应式的用户界面。
154 2
|
29天前
|
NoSQL 关系型数据库 MySQL
Redis 列表(List)
10月更文挑战第16天
17 2
|
1月前
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
1月前
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
5月前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
914 1
|
4月前
|
Java API Apache
怎么在在 Java 中对List进行分区
本文介绍了如何将列表拆分为给定大小的子列表。尽管标准Java集合API未直接支持此功能,但Guava和Apache Commons Collections提供了相关API。
|
4月前
|
运维 关系型数据库 Java
PolarDB产品使用问题之使用List或Range分区表时,Java代码是否需要进行改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
存储 安全 Java
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法