# z-paging 使用模版 
# ✅ uniapp 插件
| 编译条件 | 标题 | 备注 |
|---|---|---|
| https://ext.dcloud.net.cn/plugin?id=3935 (opens new window) | 【z-paging下拉刷新、上拉加载】插件地址 | |
| https://z-paging.zxlee.cn/ (opens new window) | 【z-paging下拉刷新、上拉加载】文档 |
✅ Copy success!
# 基本使用
<template> <view class="view-"> <z-paging ref="paging" v-model="dataList" @query="queryList" :auto-clean-list-when-reload="false" :auto-scroll-to-top-when-reload="false" :refresher-status.sync="refresherStatus" :auto-show-back-to-top="true" :back-to-top-with-animate="true" :auto="false"> <template #top> <navbarback pageTitle="列表" bg="#fff" type="black"></navbarback> </template> <template #bottom> </template> </z-paging> </view> </template> <script> export default { data() { return { statusBarHeight: getApp().globalData.systemInfo.statusBarHeight, dataList: [], refresherStatus:null, page:1, limit:10, pageV2: 1, // 当前点击的第几页 indexV2: 0, // 当前点击数组里的第几项 pageScene: -1, // -1 首次 0=不需要刷新 1=需要替换列表数据item } }, onLoad(options) { }, onShow() { let that = this this.$nextTick(()=>{ // console.log(this.pageScene,'pageScene') if (this.pageScene == -1) { // 需要初始化数据:(eg 首次进入页面) this.initListQuery() } else if (this.pageScene == 1) { // 替换数据 this.initListQueryUpdate(); } this.pageScene = 0; }) }, methods: { /** * z-pagind 数据请求 * * @param {Object} page * @param {Object} limit */ queryList(page, limit) { this.page = page this.limit = limit this.getDataList() }, /** * 初始化数据 * */ initListQuery() { if (this.$refs.paging) { this.$refs.paging.reload() } }, /** * 为了更新数据 * */ initListQueryUpdate() { console.log('更新当前分页的数据_________________start') this.pageV2 = this.getPageV2(this.indexV2, this.limit) this.getDataList(this.pageV2) console.log('更新当前分页的数据_________________end') }, /** * 计算当前点击的页码 * * @param {Object} index * @param {Object} mylimit */ getPageV2(index, mylimit) { if (!mylimit) { return 1; } // 计算当前是第几页 return Math.floor(index / mylimit) + 1; }, /** * 真实请求获取列表数据 * */ async getDataList(pageV2 = -1) { let dataList = [] try { let params = { page:pageV2>-1?pageV2:this.page, limit:this.limit, showLoading:true, } let res = await getSJDataList(params); if (res.code === 0 && res.data && res.data.list && res.data.list.length>0) { dataList = res.data.list // ========================================================== 替换数据 if (pageV2 > -1) { if (this.dataList[this.indexV2]) { // let id = this.dataList[this.indexV2].id let find = dataList.find(e=>e.id == id) if (find) { console.log('覆盖指定数据') this.dataList[this.indexV2] = find } else { // 可能被删除 this.dataList.splice(this.indexV2,1) } console.log('只更新当前页面数据 indexV2='+this.indexV2+'____pageV2='+pageV2+'___id='+id) } else { console.log('只更新当前页面数据 indexV2='+this.indexV2+'____pageV2='+pageV2) } return } // ========================================================== } } catch (err) { console.log(err,'err') } if (this.$refs.paging) { this.$refs.paging.complete(dataList); } }, /** * 点击添加的情况 pageScene = -1 * */ onClickAdd() { this.pageScene = -1 }, /** * 点击跳转详情 * * @param {Object} item * @param {Object} index */ onClickDetail(item,index) { this.pageScene = 1 this.indexV2 = index }, }, } </script> <style lang="scss"> page { background-color: #fff; } </style>✅ Copy success!
← ⭐unaipp 常用总结 z-paging →