zoukankan      html  css  js  c++  java
  • elementUI分页封装--更新

    elementUI分页封装--更新( 关联到后端接口,涉及到父组件触发子组件中的事件并处理异步 )

    这里我用的是定时器解决的异步

    都说人生没有通往成功捷径的直梯,正因如此永远不要对自己产生质疑

    分页组件

    <template>
      <div class="pagingDive">
        <div class="block">
          <el-pagination
            background
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page.sync="page"
            :page-size="limit"
            layout="total, prev, pager, next"
            :total="total"
            @click.native="pageClick()"
          ></el-pagination>
        </div>
      </div>
    </template>
    
    <script>
    export default {
      components: {},
      name: "paging",
      props: {
        pageCount: Object,//接收父组件传来的分页信息
        cardManagementVal: Array //接收父组件传来的所有数据
      },
      data() {
        return {
        //props接收父组件传来的分页信息进行赋值用来下面操作 limit: this.pageCount.limit, page: this.pageCount.page, total: this.pageCount.total, Ary: [] //定义一个空数组传给父组件 }; },

    //监听
     watch: {
        total() {
          //注意这个函数的名字必须和你监听data中的属性的名字一样,这样才能当你data中的属性发生变化时,触发这个函数
          if (this.total == (this.page - 1) * this.limit && this.total != 0) {
            //这一行是关键代码,倍数关系
            this.page -= 1;
            this.$emit("abcClick"); //获取表格数据的方法
          }
        }
      }
    computed: {}, methods: {  handleCurrentChange(val) { this.page = val; }, handleSizeChange: function(size) { this.limit = size; },
      //翻页的点击事件执行分页方法  
    pageClick() { this.tablePagination(); }, tablePagination() { let array = [], startNum = 0, endNum = 0; this.total = this.cardManagementVal.length; startNum = (this.page - 1) * this.limit; if (this.page * this.limit < this.total) { endNum = this.page * this.limit; } else { endNum = this.total; } array = this.cardManagementVal.slice(startNum, endNum); this.Ary = array;//刚刚定义的新数组已经获取到了所有数据 this.$emit("pageHandel", this.Ary); //把新数据通过自定义事件发送给父组件并执行更换 } }, created() {
      //先执行分页方法获取到数据 this.tablePagination(); }, mounted() {} }; </script> <style lang="scss" scoped> .pagingDive { 100%; height: 140px; background: #fff; padding-left: 32px; padding-right: 32px; line-height: 140px; /deep/.el-pagination { display: flex; align-items: center; .el-pager, .el-pager li { vertical-align: middle; } } } </style>

    调用分页组件

    这里用到了ref和定时器、还有传值、调用子组件事件

    千万不要忘了表格data绑定的值更换为在分页重新定义的数组

    结构:

    <Table border :columns="columns12" :data="Ary"></Table> <!-- 更换为新的数组也就是在分页方法中重新定义的 -->
    
    <com-page
            :pageCount="pageCount" //将定义的分页值传给子组件
            :cardManagementVal="cardManagementVal" //将表格中的数据传给子组件
            @pageHandel="pageHandel" //接收子组件发送的方法并赋新值
            ref="myChild" //通过ref调用子组件中的分页方法用来显示数据
         @abcCilck="say()"
    ></com-page>

    引入分页组件:

    import Page from "../../common/paging/index.vue";
    components: {"com-page": Page}

    data中的定义:

    pageCount: {
            limit: 8,//这里只需要定义一页显示多少条数据就可以了
            page: "",
            total: ""
    },
    Ary: [],//新数组也就是新数据在子组件定义的用来赋值绑定表格data中
    cardManagementVal: [] //后端所有数据

    事件:

    //显示数据的接口
    getList() {
          const req = {...};
          cardLook(req).then(res => {
            if (res.data.code == "200") {
              this.cardManagementVal = res.data.data.rows;//后端所有数据
              setTimeout(() => {//使用定时器解决异步调用子组件的分页方法
                this.myChild();
              }, 0);
              this.cardManagementVal.map(item => {});
            } else {
              return false;
            }
          });
    },
    //接收子组件传来的新数据并用于绑定到表格的data中
    pageHandel(Val) {
          this.Ary = Val;
    },
    //通过ref获取到子组件并调用子组件中的分页方法用来显示数据
    myChild() {
          this.$refs.myChild.tablePagination();
    },
    say(){
      this.getList()
    }
    //直接执行显示数据的方法和接收子组件发送的自定义事件用来获取新数据 created() { this.getList(); this.pageHandel();
      this.myChild()

    }
  • 相关阅读:
    行定位符、单词定界符实例用法
    什么是正则表达式?
    PHP正则表达式语法汇总
    PDO中的存储过程的详细介绍
    PDO中的事务处理具体介绍
    PDO中错误处理的方法
    PDO中错误处理的方法
    使用默认模式-PDO::ERRMODE_SILENT
    PDO中执行SQL语句的三种方法
    使用默认模式-PDO::ERRMODE_SILENT
  • 原文地址:https://www.cnblogs.com/home-/p/11823258.html
Copyright © 2011-2022 走看看