vue el-table实现动态添加行和列具体代码
作者:别拿曾经看以后~
实现思路:
最近遇到一个动态增加行和列的需求,本来拿到需求的时候想用el-table中自带的方法去实现的,但是经过尝试发现不能满足想要实现的需求。没办法只能在el-table的基础上自己写原生。
大概思路如下:
1.首先把table中需要动态增加的行和列分开,分别定义一个数组dataList存放新增行数据,定义数组columnList存放新增列数据。
2.其次在指定列的数据前面加新增按钮,点击新增按钮的时候请求接口拿到数据。
3.然后把拿到的数据处理,把表格内容的数据push到dataList中,把表头内容数据push到columnList中。注意如果接口没有返回表头数据,则需要自己根据具体需求创造对应列的key-value存入columnList中。
(1)行可以直接添加在现有行后面展示,也可以在指定行的后面新增行。比如:在第一行后面新增行,则使用splice添加。splice(指定行,0,添加的新行数据)
(2)点击哪行则在哪行后面添加新行。思路:获取到当前点击行的索引,使用splice添加。splice(指定行,0,添加的新行数据)
4.最后把dataList给el-table的:data="dataList"使用,columnList给使用
5.以上是新增行和列的思路。如果想删除行和列的话,则需要通过splice或slice操作dataList和columnList即可。删除指定的索引位置。
大致代码如下:
<el-table :data="dataList"> <el-table-column label="姓名" prop="name"></el-table-column> <!--动态列--> <el-table-column v-for="(it, index) in columnList" :key="index" :label="it.label"> <!--动态行--> <template slot-scope="scope"> <i class="el-icon-circle-plus-outline" @click="handleAddRow(scope.row, scope.$index)" /> <span>{{scope.row.value}}</span> // 根据项目需求进行其他逻辑处理 </template> </el-table-column> </el-table> export default { data() { return { dataList: [], // 表格数据 columnList: [], //表头数据 } }, methods: { // 动态增加行 async handleAddRow(row, index) { const data = await this.接口() data.forEach(d => { // 列添加 this.columnList.push({ label: '年龄' }) // 行添加 this.dataList.splice(index, 0, d) }) } } }
结语:
以上是el-table动态添加行和列的大概思路,大家可以作为参考,再结合具体需求细化!!!
补充:vue实现el-table表头自定义
Vue.js 是一个流行的JavaScript框架,它的数据绑定和组件化特性使得开发动态Web应用变得更加容易。其中,强大的UI组件库(如Element,iView等)能够极大地提高Web应用开发效率。而el-table是一种用于展示表格数据的组件,它拥有可排序、过滤、分页等多种功能。本文主要介绍如何使用Vue.js实现el-table表头自定义。
在Vue.js中使用el-table组件时,表头(thead)用于显示列名和控制排序、过滤等操作。默认情况下,el-table组件根据数据源中的列名自动生成表头。若需自定义表头,可通过以下方式实现:
- 使用el-table-column组件
在el-table中使用el-table-column组件可以实现自定义表头。具体操作如下:
<el-table :data="tableData"> <el-table-column prop="date" label="日期"></el-table-column> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table>
上述代码中,我们为el-table添加了三个el-table-column组件,分别对应表格中的三列数据。同时,我们在每个el-table-column组件上指定了prop和label属性,其中prop属性指定了对应的数据源中的字段名,label属性指定了表头标题。
- 使用Scoped Slots
如果需要实现更加复杂的表头,可以使用Scoped Slots进行自定义。具体操作如下:
<el-table :data="tableData"> <template slot="header"> <el-row> <el-col :span="8">日期</el-col> <el-col :span="8">姓名</el-col> <el-col :span="8">地址</el-col> </el-row> </template> <el-table-column prop="date"></el-table-column> <el-table-column prop="name"></el-table-column> <el-table-column prop="address"></el-table-column> </el-table>
上述代码中,我们使用了el-table的header slot,它可以让我们自定义表头,即在表头中添加任意HTML代码。在header slot中我们使用了el-row和el-col组件创建了一个表头行,然后通过span属性设置每列所占的宽度,最终实现了自定义表头。
到此这篇关于vue el-table实现动态添加行和列的文章就介绍到这了,更多相关el-table动态添加行和列内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!