基于vue + element-ui + vuex的记忆多选表格弹框

这篇博客介绍了如何在Vue项目中,结合Element-UI和Vuex解决多选表格在切换页面或刷新后无法记住选中状态的问题。通过使用`reserve-selection`属性和`row-key`,并利用Vuex存储已选择的数据,实现了表格选择状态的记忆功能。在遇到组件不勾选的问题时,通过Vue的$nextTick解决。最后,作者分享了创建自定义多选表格组件的思路和组件API,并提供了用法Demo及资源链接。
摘要由CSDN通过智能技术生成

一、应用场景

一般后台管理的xx编辑页面都需要点击弹框选择列表数据,自然而然选择element-ui的多选表格,但是 el-table 的多选是切换页码或者说数据刷新之后选择的数据就没了,所以element官方考虑到了这个问题之后,官方文档就加了这个属性 reserve-selection 这个属性必须配合表格的 row-key 一起使用,这样就可以实现表格跨页选择数据。好嗨哟 ==> 选择数据之后点击弹框的保存按钮,将数据回填到编辑页的数组字段显示。点击保存按钮将表单数据保存。但是 问题来了 ???我重新打开编辑页,发现数据都没勾上。卧槽!!!。后面我使用vuex存入已选择的数据,打开弹框的时候,判断数据 id 在vuex 里 就勾上。代码如下:

axios.post(this.url, val, {
    headers: {
		token: this.token
	}
}).then((res) => {
	const data = res.data
	if (data.code === 0) {
	    this.tableData = data.page.list
	    this.pager.total = data.page.total
	    this.tableData.forEach(item => {
			let obj = this.rows.find(ele => {
				return ele.id === item.id
			})
			if (obj) {
				this.$refs.multipleTable.toggleRowSelection(item, true)
			}
		})
	} else {
		const message = data.message || data.msg
		this.$message.error(message)
	}
}).catch((err) => {
	const msg = err.message || err.msg
	this.$message.error(msg)
})

代码感觉没毛病,但是就是不勾上。后来使用 vue 的 $nextTick 方法 ,用于第二次渲染再处理逻辑。

this.$nextTick(() => {
	this.setChecked()
})

// 存在勾上
setChecked () {
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值