elementUI分页简单封装( 自己写的数据没有接口 )
样式只是UI框架中的样式,没有改为什么没改因为不会改。。。简单的封装了下,太深的操作还没有领悟到
封装一点一点学,代码一点一点优化
注:不要忘了更换数据也就是表格绑定的那个数组
表格组件( 注释全部都在代码上了 )
<template> <div> <!-- 表格数据 --> <el-table style=" 100%;" :data="ary"> <el-table-column type="index" width="50"></el-table-column> <el-table-column label="编号" prop="age" width="180"></el-table-column> <el-table-column label="用户姓名" prop="name" width="180" ></el-table-column> <el-table-column label="爱好" prop="like" width="180"></el-table-column> </el-table> <!-- 引入组件 --> <!-- 把分页的值、表格绑定的所有值传给子组件用于分页操作 --> <!-- 接收子组件的事件进行触发更改表格绑定的值是个数组 --> <cop-page :pageCount="pageCount" :listVal="list" @boom="boom"></cop-page> </div> </template> <script> import "element-ui/lib/theme-chalk/index.css"; import "iview/dist/styles/iview.css"; import coPpage from "./cc/index.vue"; export default { components: { "cop-page": coPpage }, watch: {}, props: {}, data() { return { // 表格数据 list: [ { name: "1", age: 11, like: "我" }, { name: "2", age: 12, like: "饿" }, { name: "3", age: 13, like: "了" }, { name: "4", age: 14, like: "真" }, { name: "5", age: 15, like: "饿" }, { name: "6", age: 16, like: "了" } ], // 定义的分页 传给子组件 pageCount: { pageList: 3, //每页显示多少条 currentPage1: 1, //当前页 total: 6 //总数量 }, ary: [] //准备更换表格绑定的数据 在分页操作后更换 }; }, computed: {}, methods: { // 触发子组件传来的方法 更改表格绑定的值 boom(Val) { this.ary = Val; } }, created() { // 直接执行 this.boom(); }, mounted() {} }; </script> <style lang="scss" type="text/css" scoped></style>
分页组件( 注释全部都在代码上了 )
<template>
<!-- 分页组件 -->
<div class="block">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="currentPage1"
:page-size="pageList"
layout="total, prev, pager, next"
:total="total"
@click.native="pageFunction()"
></el-pagination>
</div>
</template>
<script>
import "element-ui/lib/theme-chalk/index.css";
import "iview/dist/styles/iview.css";
export default {
components: {},
// 接收父组件传来的分页值和表格绑定的数组值
props: {
pageCount: Object,
listVal: Array
},
data() {
return {
pageList: this.pageCount.pageList, //绑定父组件传来的每页数量
currentPage1: this.pageCount.currentPage1, //绑定父组件传来的当前页
total: this.pageCount.total, //接收父组件传来的数量总数
// 定义一个空数组用于存放新的表格数据 并传回去
ary: []
};
},
watch: {},
computed: {},
methods: {
handleCurrentChange(val) {
//当前页
this.currentPage1 = val;
},
handleSizeChange: function(size) {
//每页条数每页下拉显示数据
this.pageList = size;
},
// 表格数据分页的方法
tablePagination() {
let array = [],
startNum = 0,
endNum = 0;
this.total = this.listVal.length;
startNum = (this.currentPage1 - 1) * this.pageList;
if (this.currentPage1 * this.pageList < this.total) {
endNum = this.currentPage1 * this.pageList;
} else {
endNum = this.total;
}
array = this.listVal.slice(startNum, endNum);
this.ary = array; //给新数组赋值并替换绑定 这个时候的ary就是表格中的所有数据
// 发送自定义事件并把新的表格数据传过去
this.$emit("boom", this.ary);
},
// 翻页事件
pageFunction() {
// 执行表格数据分页的方法
this.tablePagination();
}
},
created() {
this.tablePagination();
},
mounted() {}
};
</script>
<style lang="scss" type="text/css" scoped></style>