vue3+elementplus的表格展示和分页实战

embedded/2024/9/24 1:33:08/

文章目录

    • 一、Element Plus的安装使用
    • 二、el-table 表格组件
    • 三、el-pagination 分页组件
    • 四、全部代码
    • 五、效果

Element Plus 是一个基于 Vue 3 的现代化 UI 组件库,旨在帮助开发者快速构建美观且功能丰富的 Web 应用程序。它提供了大量的 UI 组件,如按钮、表单、表格、弹出框、标签页、树形控件等,涵盖了 Web 应用开发中常见的大多数场景。本文通过一个实例来说明vue3+elementplus查询、展示和分页实战。

一、Element Plus的安装使用

要开始使用 Element Plus,首先需要在项目中安装它。如果你正在使用 Vue 3 的项目,可以通过 npm 或 yarn 安装 Element Plus:

npm install element-plus 

然后可以在Vue 项目中全局引入 Element Plus:

import { createApp } from 'vue'
import App from './App.vue'// 导入路由
import Router from './components/tools/Router'
// 导入ElementPlus
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'const app = createApp(App)
// 遍历ElementPlusIconsVue中的所有组件进行祖册
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {// 向应用实例中全局注册图标组件app.component(key, component)
}
app.use(ElementPlus) // 使用ElementPlus
app.use(Router); // 使用路由
app.mount('#app')

二、el-table 表格组件

el-table 是Element Plus 中的一个重要组件,用于展示列表数据。可以通过 组件来定义表格中的每一列,包括列标题、列宽、对齐方式等,可以结合 el-pagination 可以实现分页功能。示例代码如下:

<el-tableref="multipleTable":data="postList"tooltip-effect="dark"style="width: 100%"fit:pagination="pagination"@selection-change="handleSelectionChange" ><el-table-columntype="selection"width="55"></el-table-column><el-table-columnlabel="ID"width="100"prop="id"></el-table-column><el-table-columnlabel="标题"width="450"prop="title"></el-table-column><el-table-columnlabel="是否置顶"width="100"prop="isTop"></el-table-column><el-table-columnlabel="热度"width="100"prop="viewsCount"></el-table-column><el-table-columnlabel="发布时间"width="200"prop="pubTime"></el-table-column><el-table-columnlabel="操作"><template #default="scope"><el-button size="mini" type="danger" @click="deleteItem(scope.$index)">删除</el-button>         </template>     </el-table-column></el-table>

其中
:data="postList" 绑定要显示在表格中的数据源,通常是一个对象数组
fit: 让表格宽度自动填充父容器。
:pagination="pagination" 绑定分页的数据对象

数据定义如下:

// 博客文章列表数据
postList:[],
// 分页
pagination: {currentPage: 1, // 当前页pageSize: 10, // 每页显示条数total: 0, // 总条数layout: 'total,sizes,prev, pager, next, jumper', // 分页布局
},

三、el-pagination 分页组件

el-pagination Element Plus 中用于实现分页功能的重要组件。它可以与 el-table 组件结合使用,实现数据的分页显示。示例代码如下:

<el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="pagination.currentPage":page-sizes="[10, 20, 30, 40]":page-size="pagination.pageSize"layout="total, sizes, prev, pager, next, jumper":total="pagination.total">
</el-pagination>

属性
@size-change="handleSizeChange" 当每页显示数量变化时触发。
@current-change="handleCurrentChange" 当当前页变化时触发。
:current-page="currentPage" 设置当前页。
:page-sizes="[10, 20, 30, 40]" 设置每页可选的数量。
:page-size="pageSize" 设置每页显示的数量。
layout="total, sizes, prev, pager, next, jumper" 设置分页布局。
:total="tableData.length" 设置总数据量。
方法:
handleSelectionChange(val) 处理行选择变化。
deleteItem(index) 删除指定行。
handleSizeChange(val) 处理每页显示数量变化。
handleCurrentChange(val) 处理当前页变化。

四、全部代码

<template><div class="content-container" direction="vertical"><!-- input --><div><el-container class="content-row"><div class="input-tip">文章标题:</div><div class="input-field" style="width: 400px;"><el-input v-model="queryParam.words"></el-input></div><el-button type="primary" @click="getBlogList">筛选</el-button><el-button type="danger" @click="clear">清空筛选</el-button></el-container></div><!-- list --><div><el-tabs type="card" @tab-click="handleClick"><el-tab-pane label="全部"></el-tab-pane><el-tab-pane v-for="(item,index) in blogCategorys":key="index":label="item.title":name="item.id"></el-tab-pane></el-tabs><el-tableref="multipleTable":data="postList"tooltip-effect="dark"style="width: 100%"fit:pagination="pagination"@selection-change="handleSelectionChange" ><el-table-columntype="selection"width="55"></el-table-column><el-table-columnlabel="ID"width="100"prop="id"></el-table-column><el-table-columnlabel="标题"width="450"prop="title"></el-table-column><el-table-columnlabel="是否置顶"width="100"prop="isTop"></el-table-column><el-table-columnlabel="热度"width="100"prop="viewsCount"></el-table-column><el-table-columnlabel="发布时间"width="200"prop="pubTime"></el-table-column><el-table-columnlabel="操作"><template #default="scope"><el-button size="mini" type="danger" @click="deleteItem(scope.$index)">删除</el-button>         </template>     </el-table-column></el-table><div class="pagination-container"><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="pagination.currentPage":page-sizes="[10, 20, 30, 40]":page-size="pagination.pageSize"layout="total, sizes, prev, pager, next, jumper":total="pagination.total"></el-pagination></div></div></div>
</template><style scoped>
.pagination-container {margin-top: 20px;text-align: center;
}
</style><script>
import {getBlogList,getBlogCategory} from '@/api' 
export default {data() {return {// 博客文章列表数据postList:[],// 筛选博客的参数queryParam:{words:"",cateid:"",tag:"",search:"",page:1,size:10},// 分页pagination: {currentPage: 1, // 当前页pageSize: 10, // 每页显示条数total: 0, // 总条数layout: 'total,sizes,prev, pager, next, jumper', // 分页布局},// 博客分类blogCategorys:[],// 当前选中的博客分类selectCategory:"",// 当前选中的博客文章multipleSelection:[]}},mounted () {this.getBlogList();this.getBlogCategory();},// 路由更新时刷新数据beforeRouteUpdate (to) {this.getBlogList();this.getBlogCategory();},methods : {// 获取博客文章列表数据getBlogList() {getBlogList(this.queryParam).then(res => {this.postList = res.data.itemsthis.pagination.total = res.data.totalthis.pagination.currentPage= res.data.pageconsole.log(res.data)}).catch(err => {console.log(err)})},// 获取博客分类数据getBlogCategory() {getBlogCategory().then(res => {this.blogCategorys = res.dataconsole.log(res)}).catch(err => {console.log(err)})},// 改变分页大小handleSizeChange(val) {this.pagination.pageSize = val;this.queryParam.size = val;this.getBlogList(); },// 跳到当前页 handleCurrentChange(val) {this.pagination.currentPage = val;this.queryParam.page = val;this.getBlogList();},// 切换Tab 刷新数据handleClick(tab) {this.queryParam.cateid = tab.props.namethis.getBlogList();},// 清空筛选项clear() {this.queryParam.words=""this.getBlogList();},}
}
</script>

五、效果

elementplus表格
表格展示及数据分页是前端开发常用的功能,通过vue3+elementplus能够快速是实现对数据的展示及分页。


博客地址:http://xiejava.ishareread.com/


http://www.ppmy.cn/embedded/104430.html

相关文章

人工智能训练师工作内容及职业发展路径

人工智能训练师&#xff08;AI Trainer&#xff09;是一种专业职位&#xff0c;主要负责训练和优化人工智能系统&#xff0c;尤其是机器学习模型。他们的工作涉及到以下几个方面&#xff1a; 1、数据准备&#xff1a;训练师需要收集、清洗和预处理数据&#xff0c;以确保数据的…

JS学习笔记

文章目录 JS学习一、修改样式属性1、注意2、通过classList修改样式 二、获取表单里面的值三、定时器函数四、删除数组中选中的元素五、事件类型1、鼠标事件2、焦点时间3、键盘事件4、文本事件 六、document通过type获取七、获得焦点伪类选择器&#xff08;focus&#xff09;仅需…

【区块链 + 司法存证】印记区块链电子印章 | FISCO BCOS应用案例

电子印章作为传统物理印章的数字化锚定&#xff0c;除了拥有和物理印章一样的法律效力外&#xff0c;还能够有效地为企业增效降 本提质。近年来&#xff0c;随着国家双碳目标的提出以及全球新冠疫情&#xff0c;进一步加速了企业数字化转型的步伐&#xff0c;电子印章 的价值也…

C++之搜索二叉树(上)

目录 搜索二叉树的概念 搜索二叉树的操作 递归版本 二叉树的插入 二叉树的查找 二叉树的删除 非递归版本 二叉树的递归插入 二叉树的递归查找 二叉树的递归删除 在之前我们已经学习过了二叉树这一数据结构&#xff0c;本期我们将学习一种新的数据结构------搜索二…

【Faiss】构建高效搜索系统 - Faiss向量数据库的搭建

目录 ​编辑1. 引言 2. Faiss简介 3. 安装与配置 3.1 在不同操作系统上的安装方法 3.1.1 Windows 3.1.2 macOS 3.1.3 Linux 3.2 配置开发环境 3.2.1 使用virtualenv 3.2.2 使用Anaconda 1. 引言 在当今这个数据爆炸的时代&#xff0c;快速有效地处理海量数据已经成为…

高防服务器中的流量清洗是什么意思?

高防服务器能够为企业防御一定的网络攻击&#xff0c;是网络游戏行业经常会选择的一款服务器类型&#xff0c;其中高防服务器的流量清洗则是指对服务器所接收的流量进行实时监测、识别和过滤&#xff0c;将恶意流量与攻击流量进行清除&#xff0c;保证网络能够正常运行。 接下来…

前端知识HTMLCSS

目录 1. 前端开发介绍 1.1 认识前端开发 1.2 web标准 2. HTML & CSS 2.1 HTML快速入门 2.1.1 操作 2.1.2 总结 2.2 开发工具 2.3 基础标签 & 样式 2.3.1 标题实现 2.3.1.1 标题排版 2.3.1.1.1 分析 2.3.1.1.2 标签 2.3.1.1.2 实现 2.3.1.2 标题样式 2.…

Electron 项目实战 02:打包和自动更新

技术选型 electron-forgeelectron-builder electron-forge 是Electron 官方文档介绍的&#xff0c;打包和发布都包含了&#xff0c;但是包含的坑也非常多。electron-builder下载量和集成打包非常顺利&#xff0c;本教程也是采用electron-buid来介绍打包。大家在技术选型的时候…