1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <template>
- <!-- 不能用v-if (i: 每个tab页的专属下标; index: 当前tab的下标; 申明在 MescrollMoreItemMixin )-->
- <view v-show="i === index">
- <!-- top="120"下拉布局往下偏移,防止被悬浮菜单遮住 -->
- <!-- ref动态生成: 字节跳动小程序编辑器不支持一个页面存在相同的ref (如不考虑字节跳动小程序可固定值为 ref="mescrollRef") -->
- <mescroll-body :ref="'mescrollRef'+i" @init="mescrollInit" top="120" :down="downOption" @down="downCallback" :up="upOption" @up="upCallback" @emptyclick="emptyClick">
- <!-- 数据列表 -->
- <good-list :list="goods"></good-list>
- </mescroll-body>
- </view>
- </template>
-
- <script>
- import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js";
- import MescrollMoreItemMixin from "@/components/mescroll-uni/mixins/mescroll-more-item.js";
- import {apiSearch} from "@/api/mock.js"
-
- export default {
- mixins: [MescrollMixin,MescrollMoreItemMixin], // 注意此处还需使用MescrollMoreItemMixin (必须写在MescrollMixin后面)
- props:{
- i: Number, // 每个tab页的专属下标 (除了支付宝小程序必须在这里定义, 其他平台都可不用写, 因为已在MescrollMoreItemMixin定义)
- index: { // 当前tab的下标 (除了支付宝小程序必须在这里定义, 其他平台都可不用写, 因为已在MescrollMoreItemMixin定义)
- type: Number,
- default(){
- return 0
- }
- },
- tabs: { // 为了请求数据,演示用,可根据自己的项目判断是否要传
- type: Array,
- default(){
- return []
- }
- }
- },
- data() {
- return {
- downOption:{
- auto:false // 不自动加载 (mixin已处理第一个tab触发downCallback)
- },
- upOption:{
- auto:false, // 不自动加载
- // page: {
- // num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
- // size: 10 // 每页数据的数量
- // },
- noMoreSize: 4, //如果列表已无数据,可设置列表的总数量要大于半页才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看; 默认5
- empty:{
- tip: '~ 空空如也 ~', // 提示
- btnText: '去看看'
- }
- },
- goods: [] //列表数据
- }
- },
- methods: {
- /*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
- upCallback(page) {
- // this.i: 每个tab页的专属下标
- // this.index: 当前tab的下标
- let word = this.tabs[this.i].name
- apiSearch(page.num, page.size, word).then(curPageData=>{
- //联网成功的回调,隐藏下拉刷新和上拉加载的状态;
- this.mescroll.endSuccess(curPageData.length);
- //设置列表数据
- if(page.num == 1) this.goods = []; //如果是第一页需手动制空列表
- this.goods=this.goods.concat(curPageData); //追加新数据
- }).catch(()=>{
- //联网失败, 结束加载
- this.mescroll.endErr();
- })
- },
- //点击空布局按钮的回调
- emptyClick(){
- uni.showToast({
- title:'点击了按钮,具体逻辑自行实现'
- })
- }
- }
- }
- </script>
|