【vue】el-table实现动态添加行和列

这篇具有很好参考价值的文章主要介绍了【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动态添加行和列的大概思路,大家可以作为参考,再结合具体需求细化!!!不足之处请指出,谢谢文章来源地址https://www.toymoban.com/news/detail-506323.html

到了这里,关于【vue】el-table实现动态添加行和列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包