日常学习(组件)

组件封装(分页)

父组件
<template>
  <div>
    <hr />
    <FenYe
      :page.sync="page"
      :limit.sync="limit"
      :total.sync="total"
      @getList="getList"
    />
  </div>
</template>

<script>
import FenYe from "./FenYe.vue";
export default {
  components: {
    FenYe,
  },
  data() {
    return {
      page: 1,
      limit: 20,
      total: 40,
    };
  },
  methods: {
    // 列表查询方法
    getList() {},
  },
};
</script>

子组件
<template>
  <div>
    <el-pagination
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page.sync="currentPage"
      :page-size.sync="pageSize"
      :page-sizes="pageSizes"
      layout="total, sizes, prev, pager, next, jumper"
      :total="total"
    />
    <span style="font-weight: normal; color: #606266"
      >&nbsp;{{ currentPage }}/{{ Math.ceil(total / limit) }}&nbsp;</span
    >
  </div>
</template>

<script>
export default {
  // layout="total, sizes, prev, pager, next, jumper"   组件布局,子组件名用逗号分隔
  name: "FuZuJian",
  props: {
    // 页数
    page: {
      default: 1,
      type: Number,
    },
    // 长度
    limit: {
      default: 5,
      type: Number,
    },
    // 总条数
    total: {
      default: 20,
      type: Number,
    },
    // 每页显示个数选择器的选项设置
    pageSizes: {
      type: Array,
      default() {
        return [10, 20, 30];
      },
    },
  },
  computed: {
    currentPage: {
      get() {
        return this.page;
      },
      set(val) {
        //currentPage 这里对currentPage做出来改变就会走这里
        //这边更新数据走这里
        console.log("currentPage", this.currentPage, val, 11111111111);
        this.$emit("update:page", val);
      },
    },
    pageSize: {
      get() {
        return this.limit;
      },
      set(val) {
        this.$emit("update:limit", val);
      },
    },
  },

  methods: {
    handleSizeChange(val) {
     // console.log(`每页 ${val} 条`);
      //   调用父组件列表查询方法
      this.$emit("getList", { page: this.currentPage, limit: val });
    },
    handleCurrentChange(val) {
     // console.log(`当前页: ${val}`);
      this.$emit("getList", { page: val, limit: this.pageSize });
    },
  },
};
</script>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值