vue mescroll使用上拉加载、下拉刷新_黎轩栀海的博客-程序员宅基地

技术标签: css  html5  前端  vue.js  

一个页面多次调用mescroll

注:this.navData[1].mescroll.resetUpScroll(); // 点击筛选重置方法

<template>
  <div class="healthy-bean-record-c">
    <div class="top">
      [外链图片转存失败(img-pPYyrr3K-1562119870434)(https://mp.csdn.net/assets/images/mine/tixianjilu.png)]
    </div>
    <div class="navLine">
      <!-- <van-tabs v-model="active" swipeable animated> -->
      <van-tabs v-model="active" swipeable>
        <van-tab :title="navData[0].tit">

          //参数名和初始化方法名需进行区分
          <mescroll-vue ref="mescroll0" :up="mescrollUp0" @init="mescrollInit0">
            <div class="item" v-for="(item,index) in navData[0].dataList">
              <span class="s1">{
   {item.desc}}</span>
              <span class="s2">{
   {item.addtime}}</span>
              <span class="s3" v-if="item.status==1">+{
   {item.num}}健康豆</span>
              <span class="s3" v-else-if="item.status==2">-{
   {item.num}}健康豆</span>
            </div>
          </mescroll-vue>
        </van-tab>
        <van-tab :title="navData[1].tit">

          //参数名和初始化方法名需进行区分
          <mescroll-vue ref="mescroll1" :up="mescrollUp1" @init="mescrollInit1">
            <div class="item" v-for="(item,index) in navData[1].dataList">
              <span class="s1">{
   {item.desc}}</span>
              <span class="s2">{
   {item.addtime}}</span>
              <span class="s3">+{
   {item.num}}健康豆</span>
            </div>
          </mescroll-vue>
        </van-tab>
        <van-tab :title="navData[2].tit">

          //参数名和初始化方法名需进行区分
          <mescroll-vue ref="mescroll2" :up="mescrollUp2" @init="mescrollInit2">
            <div class="item" v-for="(item,index) in navData[2].dataList">
              <span class="s1">{
   {item.desc}}</span>
              <span class="s2">{
   {item.addtime}}</span>
              <span class="s3">-{
   {item.num}}健康豆</span>
            </div>
          </mescroll-vue>
        </van-tab>
      </van-tabs>
    </div>
  </div>
</template>
<script>
import MescrollVue from "mescroll.js/mescroll.vue";
import axios from "axios";
export default {
  data: function () {
    return {
      // 三个配置项
      mescrollUp0: {
        callback: this.upCallback,
        //以下是一些常用的配置,当然不写也可以的.
        page: {
          num: 0, //当前页 默认0,回调之前会加1; 即callback(page)会从1开始
          size: 10 //每页数据条数,默认10
        },
        htmlNodata: '<p class="upwarp-nodata">-- END --</p>',
        noMoreSize: 5, //如果列表已无数据,可设置列表的总数量要大于5才显示无更多数据;避免列表数据过少(比如只有一条数据), 显示无更多数据会不好看这就是为什么无更多数据有时候不显示的原因
        toTop: {
          //回到顶部按钮
          src: "./static/mescroll/mescroll-totop.png", //图片路径,默认null,支持网络图
          offset: 1000 //列表滚动1000px才显示回到顶部按钮
        },
        empty: {
          //列表第一页无任何数据时,显示的空提示布局; 需配置warpId才显示
          warpId: "xxid", //父布局的id (1.3.5版本支持传入dom元素)
          icon: "./static/mescroll/mescroll-empty.png", //图标,默认null,支持网络图
          tip: "暂无相关数据~" //提示
        }
      },
      mescrollUp1: {
        callback: this.upCallback
      },
      mescrollUp2: {
        callback: this.upCallback
      },
      // 使用数组接收三个列表
      navData: [
        {
          tit: "全部",
          mescroll: null,
          dataList: []
        },
        {
          tit: "收入",
          mescroll: null,
          dataList: []
        },
        {
          tit: "支出",
          mescroll: null,
          dataList: []
        }
      ]
    };
  },
  components: { MescrollVue },
  methods: {
    // 三个初始化方法
    mescrollInit0(mescroll) {
      this.navData[0].mescroll = mescroll;
    },
    mescrollInit1(mescroll) {
      this.navData[1].mescroll = mescroll;
    },
    mescrollInit2(mescroll) {
      this.navData[2].mescroll = mescroll;
    },
    // 一个公用的回调函数,使用if判断是哪个
    upCallback(page, mescroll) {
      console.log(page);
      console.log(this.active);
      if (this.active === 0) {
        //全部
        this.$http("/cml/api/newuser/jiankang", {
          /*pageNum: page.num,
          pageSize: this.pageSize,*/
          status: -1
        })
          .then(res => {
            let arr = res.data;
            if (page.num === 1) {
              this.navData[0].dataList = [];
            }
            this.navData[0].dataList = this.navData[0].dataList.concat(arr);
            this.$nextTick(() => {
              mescroll.endSuccess(arr.length, false);
            });
          })
          .catch(err => {
            mescroll.endErr();
          });
      } else if (this.active === 1) {
        // 收入
        this.$http("/cml/api/newuser/jiankang", {
          /*pageNum: page.num,
          pageSize: this.pageSize,*/
          status: 1
        })
          .then(res => {
            let arr = res.data;
            if (page.num === 1) {
              this.navData[1].dataList = [];
            }
            this.navData[1].dataList = this.navData[1].dataList.concat(arr);
            this.$nextTick(() => {
              mescroll.endSuccess(arr.length, false);
            });
          })
          .catch(err => {
            mescroll.endErr();
          });
      } else {
        // 支出
        this.$http("/cml/api/newuser/jiankang", {
          /*pageNum: page.num,
          pageSize: this.pageSize,*/
          status: 2
        })
          .then(res => {
            let arr = res.data;
            if (page.num === 1) {
              this.navData[2].dataList = [];
            }
            this.navData[2].dataList = this.navData[2].dataList.concat(arr);
            this.$nextTick(() => {
              mescroll.endSuccess(arr.length, false);
            });
          })
          .catch(err => {
            mescroll.endErr();
          });
      }
    }
  }
};
</script>
<style lang="less" scoped>
/*固定高度*/
.mescroll {
  position: fixed;
  top: 6.07rem;
  bottom: 0;
  height: auto;
  /*如设置bottom:50px,则需height:auto才能生效*/
}

.van-tabs--line {
  padding-top: 1.32rem;
}

/deep/.van-tabs--line .van-tabs__wrap {
  height: 1.32rem;
}

.healthy-bean-record-c {
  &:before {
    content: '';
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    width: 100%;
    height: 100%;
    z-index: -1;
    background-color: white;
  }

  .top {
    width: 100%;
    height: 3.4rem;
    text-align: center;
    border-bottom: 0.05rem solid #d9d9d9;

    .img {
      width: 2.26rem;
      padding-top: 0.6rem;
    }
  }

  .item {
    margin: 0.8rem 0.74rem;
    display: flex;
    justify-content: space-between;

    .s1 {
      width: 30%;
      font-size: 0.34rem;
      color: #232323;
    }

    .s2 {
      width: 45%;
      font-size: 0.32rem;
      color: #232323;
      text-align: center;
    }

    .s3 {
      width: 25%;
      font-size: 0.31rem;
      color: #ac415d;
      text-align: right;
    }
  }
}
</style>

注意点:

noMoreSize 

默认值为:5,

如果列表已无数据,可设置列表的总数量要大于5才显示无更多数据;避免列表数据过少(比如只有一条数据), 显示无更多数据会不好看这就是为什么无更多数据有时候不显示的原因

mescroll官网:mescroll -- 精致的下拉刷新和上拉加载js框架

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yuan_jlj/article/details/119949273

智能推荐

Matlab中图片保存的5种方法_matlab训练进度图怎么保存_u013476464的博客-程序员宅基地

matlab的绘图和可视化能力是不用多说的,可以说在业内是家喻户晓的。Matlab提供了丰富的绘图函数,比如ez**系类的简易绘图函数,surf、mesh系类的数值绘图函数等几十个。另外其他专业工具箱也提供了专业绘图函数,这些值得大家深入学习好久。今天我只是讨论下如何保存这些由Matlab绘制出来的图像呢?当然借助第三方截图软件,就算了!1、使用imwrite 函数_matlab训练进度图怎么保存

管理类联考-逻辑 : 基础 [三]_2019年管理类联考逻辑部分下载_张伯毅的博客-程序员宅基地

假言判断是断定一事物情况存在是另一事物情况存在的条件的判断充分假言判断: 只要......就......充分条件假言判断:P→Q必要条件假言判断:¬P→¬Q充分必要条件假言判断:PQ..._2019年管理类联考逻辑部分下载

subline Text3--emmet插件_人生如初见_张默的博客-程序员宅基地

下载安装:步骤一:首先你需要查看下你的sublime text上是否安装了Package Control,如果没有安装,你需要为sublime text安装Package Control组件1)查看Preferences -->package Control 存在 如果不存在进行下面的步骤,如果存在直接进行第二步2)粘贴以下代码到底部命令行并回车: import urllib2,...

spring boot 一个简单的认识——全注解下的Spring IOC_谜一样的Coder的博客-程序员宅基地

前言spring boot是基于注解开发的Spring IOC,之前接触过IOC,这个概念并不奇怪,简单点说就是spring管理bean的容器。IOC容器一般具备两个基本功能:1、通过描述管理Bean,包括发布和获取。2、描述Bean之间的依赖关系。这两个问题深究下去是没有边界的,尤其是Bean之间的依赖关系,这个就是spring的核心。测试环境搭建之前参看了慕课网上的一个教程,觉得其...

简单学习下springIoc以及利用反射机制是如何实现的_凹凸曼蓝博one的博客-程序员宅基地

文章目录什么是springIoc手写springIoc实现思路什么是springIocIOC(Inversion of Control)意为控制反转,他是一种设计思想.并非实际的技术.最核心的思想就是将对象实例创建的控制权交给程序(IOC 容器)IOC 容器:一个管理所有控制反转过程中创建的对象的 key-value 容器结构(可以简单理解为:hashMap)Spring 的 IOC(...

集成存储器控制器(IMC)功能_U.2 SSD的博客-程序员宅基地

IMC是CPU的集成存储器控制器,处理器每个CPU晶粒支持两个IMC,每个IMC会根据处理器类型能够控制两个或者三个DDR4通道。

随便推点

ShardingSphere的缺省表分区策略的配置_shardingsphere actual-data-nodes_无级程序员的博客-程序员宅基地

今天项目里用ShardingSphere进行表分区,但发现缺省的表分区策略配置一直不生效,经仔细调试发现,必须要配置一个“actual-data-nodes”才能生效。具体配置如下:spring: profiles: active: cache, global-route shardingsphere: datasource: names: db-001 ..._shardingsphere actual-data-nodes

消息队列ActiveMQ_activemq消息队列_杨忠荣的博客-程序员宅基地

消息队列activeMQ消息队列是解决项目与项目之间传输消息的消息队列是1.干什么用的?2.在哪里用?3.有什么用消息队列(MQ)到底能干什么?一、什么是MQ?MQ全称为Message Queue,也就是消息队列,是应用程序和应用程序之间的通信方法。二、MQ能用来干什么?能用来干什么,也就是MQ的适用场景。在微服务盛行的当下,MQ被使用的也是越来越多,一般常用来进行**「业务异步解耦」、「解耦微服务」、「流量削峰填谷」、「消息分发」、「分布式事务的数据一致性」**,我们分别来看一_activemq消息队列

Objective-C浅拷贝和深拷贝_BearsG的博客-程序员宅基地

浅拷贝浅拷贝就是对内存地址的复制,让目标对象指针和源对象指向同一片内存空间。如:char* str = (char*)malloc(100);char* str2 = str;浅拷贝只是对对象的简单拷贝,让几个对象共用一片内存,当内存销毁的时候,指向这片内存的几个指针需要重新定义才可以使用,要不然会成为野指针。iOS 里面的浅拷贝在 iOS 里面, 使用retain 关键字进行引用计数,就是一种更

CV项目1-SSD-程序员宅基地

SSD详解-博客园-节选

ssh中struts.xml文件中表单跳转报错找不到action_朝曦QAQ的博客-程序员宅基地

错误原因:UserAction中的方法跳转值写错了,导致在struts.xml中找不到对应值进行跳转,然后就会报action不存在的错误。解决办法:仔细对比Action中的方法的返回值与&lt;result name="用户登录成功" type="redirect"&gt;/index.jsp&lt;/result&gt;中的name值。ERROR - Exception occurred dur...

并查集——《畅通工程》_qq_19447147的博客-程序员宅基地

//题目来自于HDU1232Problem Description某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?Input测试输入包含若干测试用例。每个测试用例的第1行给出两

推荐文章

热门文章

相关标签