vue面试题十:vue+elementUI组件table实现前端分页功能+前端模糊查询功能

vue教程——13vue+elementUI组件table实现前端分页功能+前端模糊查询功能

一 elementUI组件table实现前端分页功能

<template>
    <div>
        <el-table :data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)" style="width: 100%">
            <el-table-column prop="date" label="日期" width="180">
            </el-table-column>
            <el-table-column prop="name" label="姓名" width="180">
            </el-table-column>
            <el-table-column prop="address" label="地址">
            </el-table-column>
        </el-table>
        <!-- 分页器 -->
        <div class="block" style="margin-top:15px;">
            <el-pagination align='center' @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[1,5,10,20]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="tableData.length">
            </el-pagination>
        </div>
    </div>
 
</template>
 
  <script>
export default {
    data() {
        return {
            tableData: [
                {
                    date: "2016-05-02",
                    name: "王小虎",
                    address: "上海市普陀区金沙江路 1518 弄"
                },
                {
                    date: "2016-05-04",
                    name: "王小虎",
                    address: "上海市普陀区金沙江路 1517 弄"
                },
                {
                    date: "2016-05-01",
                    name: "王小虎",
                    address: "上海市普陀区金沙江路 1519 弄"
                },
                {
                    date: "2016-05-03",
                    name: "王小虎",
                    address: "上海市普陀区金沙江路 1516 弄"
                }
            ],
            currentPage: 1, // 当前页码
            total: 20, // 总条数
            pageSize: 1 // 每页的数据条数
        };
    },
    methods: {
        handleSizeChange(val) {
            console.log(`每页 ${val}`);
            this.currentPage = 1;
            this.pageSize = val;
        },
        handleCurrentChange(val) {
            console.log(`当前页: ${val}`);
            this.currentPage = val;
        }
    }
};
</script>
前端分页主要写法:
1 :data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)"   
2 :total="tableData.length"
3 点击分页时的操作
methods: {
        handleSizeChange(val) {
            console.log(`每页 ${val}`);
            this.currentPage = 1;
            this.pageSize = val;
        },
        handleCurrentChange(val) {
            console.log(`当前页: ${val}`);
            this.currentPage = val;
        }
    }
4 写上页面刚加载时候的初始值
 			currentPage: 1, // 当前页码
            total: 20, // 总条数
            pageSize: 1 // 每页的数据条数

二 前端模糊查询功能

<template>
    <div>
         <!-- 搜索框-->
         <el-input v-model="searchInput"> </el-input>
         <el-button @click="searchMethod">搜索</el-button>
         <!-- 表格 -->
        <el-table :data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)" style="width: 100%">
            <el-table-column prop="date" label="日期" width="180">
            </el-table-column>
            <el-table-column prop="name" label="姓名" width="180">
            </el-table-column>
            <el-table-column prop="address" label="地址">
            </el-table-column>
        </el-table>
        <!-- 分页器 -->
        <div class="block" style="margin-top:15px;">
            <el-pagination align='center' @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[1,5,10,20]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="tableData.length">
            </el-pagination>
        </div>
    </div>
 
</template>
 
  <script>
export default {
    data() {
        return {
            tableData: [
                {
                    date: "2016-05-02",
                    name: "王小虎",
                    address: "上海市普陀区金沙江路 1518 弄"
                },
                {
                    date: "2016-05-04",
                    name: "王小虎",
                    address: "上海市普陀区金沙江路 1517 弄"
                },
                {
                    date: "2016-05-01",
                    name: "王小虎",
                    address: "上海市普陀区金沙江路 1519 弄"
                },
                {
                    date: "2016-05-03",
                    name: "王小虎",
                    address: "上海市普陀区金沙江路 1516 弄"
                }
            ],
            currentPage: 1, // 当前页码
            total: 20, // 总条数
            pageSize: 1, // 每页的数据条数,
            tableDataAnother:[]
        };
    },
    methods: {
        handleSizeChange(val) {
            console.log(`每页 ${val}`);
            this.currentPage = 1;
            this.pageSize = val;
        },
        handleCurrentChange(val) {
            console.log(`当前页: ${val}`);
            this.currentPage = val;
        },
        searchMethod() {
      		var fuzzy = this.searchInput;
      		if (fuzzy) {
        		this.tableData = this.tableDataAnother.filter((value) => {
          		return value.name.includes(fuzzy)|| value.address.includes(fuzzy);
       		 });
     	    } else {
        		this.tableData = this.tableDataAnother
      		}
    	},
    }
};
</script>

具体做法:
1 tableData赋初值的时候,顺便将值赋值给tableDataAnother
2 使用filter 、includes配合使用,得到过滤后的数组

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值