vue实现分页功能

 更新时间:2021年08月31日 14:50:34   作者:waillyer  
这篇文章主要为大家详细介绍了vue实现分页功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了vue实现分页功能的具体代码,供大家参考,具体内容如下

  • 使用组件分页
  • 自己写分页

一、组件分页

<el-pagination
     layout="prev, pager, next"
     @current-change="changePageNum"
     :current-page="pageNum"
     :page-size="pageSize"
     :total="total">
</el-pagination>
data(){
return{
   tableData: [],
        total: 0,//总数
        pageNum: 1,//当前页
        pageSize: 15,//每页显示数量
}
}
  mounted: function () {
      this.query();//加载页面时,获取数据
    },
    methods:{
       //切换页码
        changePageNum: function (val) {
        this.pageNum = val;
        this.query();
      },
      //通过接口,获取数据
    query: function () {
        var data = {
          name: this.name || '',
          fleetId: this.FleetId,
          pageNum: this.pageNum,//当前页
          pageSize: this.pageSize//查询个数
        };
        RoleManage.getRole(data)
        .then(res => {
          var data = res;
          if (res.success) {
            this.tableData = data.obj.list;
            this.total = data.obj.total;
            this.name ='';
          } else {
            this.$message('查询失败');
          }
        }).catch(err => {
          // 异常情况
          console.log(err);
        });
      },
   
      }

组件分页效果

二、自己构建分页

有些时候需要根据需求自己写分页

1、分页样式

2、上下切页

//调度-系统通讯录分页
        dispatchCourentPage: 1,
        //调度-系统通讯录当前选中标签标记
        dispatchCourentIndex: 1,
        //调度-系统通讯录更多标记项:组id
        dispatchMorecommandGroupId: '',
        dispatchTotlePage: 0,
//上页
 handleLastPage() {
        if (this.dispatchCourentPage === 1) return;
        this.dispatchCourentPage -= 1;
        let index = this.dispatchCourentIndex;
        if (this.dispatchMorecommandGroupId != '') {
          this.queryBookMoreBygroupId(this.dispatchMorecommandGroupId);
        } else {
          this.queryBookmember(index);
        }
      },
//下页
 handleNextPage() {
   if (this.dispatchCourentPage === this.dispatchTotlePage) return;
   this.dispatchCourentPage += 1;
   let index = this.dispatchCourentIndex;
   if (this.dispatchMorecommandGroupId != '') {
     this.queryBookMoreBygroupId(this.dispatchMorecommandGroupId);
   } else {
     this.queryBookmember(index);
   }

 }

三、使用监听属性控制分页显示 

computed: {
      limitData() {
        let data = [...this.table1Datas];
        return data;
      },
            // 因为要动态计算总页数,所以还需要一个计算属性来返回最终给 Table 的 data
      dataWithPage() {
        const data = this.limitData;
        const start = this.current * this.size - this.size;
        const end = start + this.size;
        return [...data].slice(start, end);
      },
  }

四、js控制分页,计算总页数

方法1

/**
   *根据数据条数与每页多少条数据计算页数 
   * totalnum 数据条数
   * limit 每页多少条
  */
 pageCount(totalnum, limit) {
     return totalnum > 0 ? ((totalnum < limit) ? 1 : ((totalnum % limit)
        ? (parseInt(totalnum / limit) + 1)
         : (totalnum / limit))) : 0;
 },

方法2

/**
   * 分页的总页数算法
   * 总记录数:totalRecord
   * 每页最大记录数:maxResult
 */
 function pageCount() {
     totalPage = (totalRecord + maxResult -1) / maxResult;
}

方法3 推荐

totalPage  = Math.floor((totalRecord  +maxResult -1) /maxResult );

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Vue3 $emit用法指南(含选项API、组合API及 setup 语法糖)

    Vue3 $emit用法指南(含选项API、组合API及 setup 语法糖)

    这篇文章主要介绍了Vue3 $emit用法指南,使用 emit,我们可以触发事件并将数据传递到组件的层次结构中,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Vue3在history模式下如何通过vite打包部署白屏

    Vue3在history模式下如何通过vite打包部署白屏

    这篇文章主要介绍了Vue3在history模式下如何通过vite打包部署白屏问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • vue中this.$set()的基本用法实例

    vue中this.$set()的基本用法实例

    最近工作上经常操作数组数据,并且要求实时更新视图数据,这个时候首先想到的是 vue.set(),下面这篇文章主要给大家介绍了关于vue中this.$set()的基本用法实例,需要的朋友可以参考下
    2023-01-01
  • Vue使用electron转换项目成桌面应用方法介绍

    Vue使用electron转换项目成桌面应用方法介绍

    Electron也可以快速地将你的网站打包成一个原生应用发布,下面这篇文章主要给大家介绍了关于Vue和React中快速使用Electron的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • vue中window.onresize的使用解析

    vue中window.onresize的使用解析

    这篇文章主要介绍了vue中window.onresize的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • el-table实现给每行添加loading效果案例

    el-table实现给每行添加loading效果案例

    这篇文章主要介绍了el-table实现给每行添加loading效果案例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • vue-swiper的使用教程

    vue-swiper的使用教程

    swiper是我之前做前端页面会用到的一个插件,我自己认为是非常好用的。这篇文章给大家介绍vue-swiper的使用教程,感兴趣的朋友一起看看吧
    2018-08-08
  • Vue中select下拉框的默认选中项的三种情况解读

    Vue中select下拉框的默认选中项的三种情况解读

    这篇文章主要介绍了Vue中select下拉框的默认选中项的三种情况解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 关于this.$refs获取不到dom的可能原因及解决方法

    关于this.$refs获取不到dom的可能原因及解决方法

    这篇文章主要介绍了关于this.$refs获取不到dom的可能原因及解决方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Vue前端实现截图功能的简单步骤

    Vue前端实现截图功能的简单步骤

    本文介绍了如何使用html2canvas库来实现HTML页面或某个元素的截图功能,文中通过代码介绍的非常详细,需要注意的是此方法只能在浏览器环境中使用,需要的朋友可以参考下
    2024-10-10

最新评论