element ui 分页请求和操作提示的封装

工作一段时间后大多应用于elementui进行页面的搭建,在和后台进行对接时发现了一些问题希望整理出来能帮助大家,自己学习

  • 先看一下平时elementui分页器的使用
<div class="block">
    <span class="demonstration">完整功能</span>
    <el-pagination
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page="currentPage"
      :page-sizes="[100, 200, 300, 400]"
      :page-size="100"
      layout="total, sizes, prev, pager, next, jumper"
      :total="400">
    </el-pagination>
  </div>
复制代码
<script>
  export default {
    methods: {
      handleSizeChange(val) {
        console.log(`每页 ${val} 条`);
      },
      handleCurrentChange(val) {
        console.log(`当前页: ${val}`);
      }
    },
    data() {
      return {
        currentPage: 5,
      };
    }
  }
</script>
复制代码
看一下效果··
- 但是在实际的与后台交互的过程中不单只是将从后台获取到的数据单纯的绑定到table上还要考虑当table的数据过多时是否应该限制获取的数据而不是全部获取,按需加载,当用户点击下一页或者改变表单时再进行数据的请求 ##### 总之大概就是数据不一次获取而是根据用户的点击选择来进行获取减轻服务器的压力及等待时间
  • 首先设置分页器
 <el-pagination
      :current-page="currentPage"
      :page-sizes="[5,10]"
      :page-size="pagesize"
      :total="total"
      layout="total, sizes, prev, pager, next, jumper"
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
    />
复制代码
 // 传第几页,页数限制
    PageAxios (page, limit) {
      let _this = this
      this.$axios
        .post(this.QueryUrl, {
          page,
          limit
        })
        .then(res => {
          console.log(res.data)
          console.log(res.data.rows)
          let total = res.data.total // 返回页面总数
          let limit = res.data.limit // 返回页数限制
          // let page = res.data.page // 返回第几页
          _this.tableData = res.data.rows
          // _this.currentPage = page // 初始页
          _this.total = total // 获取页面总数
          _this.pagesize = limit // 初始页
        })
复制代码
封装后的方法调用就十分的简单,只需要传入页面的初始页,和每一页的限制就可以了
 // 页面加载获取初始值
    handleDataGet () {
      this.PageAxios(1, this.pagesize)
    },
    // 控制页面页数
    handleSizeChange: function (size) {
      this.PageAxios(1, size)
    },
    // 点击第几页
    handleCurrentChange: function (currentPage) {
      this.PageAxios(currentPage, this.pagesize)
    }
复制代码
看一下效果··
可以通过控制currentPage,pagesize 这2个变量来控制每次请求的页数及其请求的条数
  • 附带一个elementui的用户提示框 可以根据与后台约定的code参数完成提示
 // 封装用户提示
    msgalert (res, _this) {
        //请求成功
      if (res.data.code === 200) {
        this.$message({
          message: res.data.msg,
          type: 'success'
        })
        this.httpGet()
      } else {
        // 提示用户
        console.log(res.data.msg)
        this.$message.error(res.data.msg)
      }
    }
复制代码
  handle () {
      let _this = this
      this.$axios
        .post(this.$store.state.BaseUrl)
        .then(res => {
          console.log(res.data)
          _this.msgalert(res, _this)
        })
        .catch(e => {
          console.log(e)
        })
    },
复制代码
可以多次调用
结语

附上项目地址如果碰巧对大家能够有帮助那真的是太好啦,希望大家多给我一些鼓励。

整合的后台地址

转载于:https://juejin.im/post/5c388bd151882524ed5b9f2a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值