在vue项目里面使用element的pagination分页技术总结

本文介绍了如何在Vue项目中使用Element-UI的el-pagination组件时,避免`current-change`事件触发,只响应`size-change`,并演示了如何设置初始每页数据量msgSize和监听其变化。

在main.js中引入:

import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import App from './App.vue';

Vue.use(ElementUI);

new Vue({
  el: '#app',
  render: h => h(App)
});

html:

<el-pagination
        :total="total"
        :page-size="msgSize"
        background
        :page-sizes="[2, 3, 5, 10, 50, 100]"
        :pager-count="5"
        :current-page="msgPage"
        layout="total, sizes, prev, pager, next, jumper"
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
    />

js:

需要定义的数据:data

data() {
    return {
      total:0,
      tableData:null,
      msgPage:0,
      msgSize:5 
    }
  },

函数:

methods: {
    handleSizeChange(val) {
      this.msgSize = val;
      this.getList();
    },
    handleCurrentChange(val) {
      this.msgPage = val;
      this.getList();
    },
    getList() {
      if (this.msgPage < 0) this.msgPage = 1;
      let param = {
        token: sessionStorage.getItem('token'),
        pageNum: this.msgPage,
        pageSize: this.msgSize,
      }
      getAllPaper(param).then(response => {
        console.log("param",param)
        if (response.data.code == '100') {
          this.tableData = response.data.data.list
          this.total = response.data.data.total

        }
      })
    },
  }

注意点:

msgSize:5影响了每页多少条数据的初始值,当msgSize:5时,初始就是5条,

参考文章:element-ui中el-pagination分页组件,切换每页显示数量时,有时候数据不显示或获取到的数据为空;只想触发size-change事件不触发current-change事件

 

 

虽然给定的参考引用中未提及Vue 3使用Element组件库实现分页Pagination最后一页禁止点击的具体方法,但可以从通用的Vue 3和ElementPlus(Vue 3对应的Element组件库)开发思路进行分析。 在ElementPlus里,`el-pagination` 组件提供了一系列属性与事件,可借助其 `disabled` 属性达成特定页码禁止点击的效果。要让最后一页禁止点击,可通过计算当前页码、总页数,在最后一页时把 `disabled` 属性设为 `true`。 以下是示例代码: ```vue <template> <div> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total" :disabled="isLastPageDisabled" > </el-pagination> </div> </template> <script setup> import { ref, computed } from 'vue'; const currentPage = ref(1); const pageSize = ref(10); const total = ref(100); const handleSizeChange = (val) => { currentPage.value = 1; pageSize.value = val; // 获取列表数据 }; const handleCurrentChange = (val) => { currentPage.value = val; // 获取列表数据 }; const totalPages = computed(() => Math.ceil(total.value / pageSize.value)); const isLastPageDisabled = computed(() => currentPage.value === totalPages.value); </script> ``` 在上述代码中,借助 `computed` 计算 `totalPages`(总页数)与 `isLastPageDisabled`(最后一页是否禁止点击)。当 `currentPage` 等于 `totalPages` 时,`isLastPageDisabled` 为 `true`,最后一页按钮就会被禁用。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值