vue 改变table某一行的值_vue中新增表格行和列设置对应值的时候不触发Dom更新的问题...

本文讲述了在Vue.js项目中遇到的表格数据动态增加行和列时,无法触发DOM视图更新的问题。通过分析发现新增数据缺少set和get方法,导致无法响应式更新。解决方案是使用深拷贝方法(JSON.parse(JSON.stringify()))创建新对象,确保数据独立并能触发视图更新。同时,文章还展示了如何为新增列设置set和get方法以更新视图。
摘要由CSDN通过智能技术生成

最近项目中出现了一个需求就是在现有的表格基础上添加新的行和列,本以为是一件很简单的事情,直到我在设置新增的对应值的时候发现了他不能触发Dom视图更新,不知该如何下手,我打印了表格数据发现了问题所在如下

7ce3cbdc5d63ae83db3a5450ece6df89.png

image.png

新增的行数据里面没有set get也就触发不了视图更新, 如何解决这个问题呢? 我就想既然原来的数据 中有set 和 get我为啥不复制一个来作为最新的数据,但是随之而来的又有新的问题就是这里的set 和 get绑定的是原先的被复制的那一行数据这里新的行数据改变的时候也会影响到原来那一行数据于是我就想这里需要做一个深拷贝应该能解决问题, 这里就使用了JSON.parse(JSON.stringify(val))做了深拷贝,复制成功了, 也能独立触发set和get完美!!! 代码如下:

@click='addObj.Table_data.push(clearObj($copy(addObj.Table_data[0])))'

let clearObj = obj => { // 遍历对象并且清空数据

Object.keys(obj).map(v => {

obj[v] = ''

})

return obj

}

let $copy = (val) => { // JSON形式的深拷贝

return JSON.parse(JSON.stringify(val))

};

接下来就是新增列数据,同样的由于是新增的表头数据,对应每个行数据里没有这个表头的set和get 那我们就分别给他们设置set和get就可,遍历每一行数据给他们添加这个新增表头对应键的set代码如下:

this.addObj.Table_data.map(v => {

this.$set(v, this.addTableAddHeader, '')

})

this.headers.push(this.addTableAddHeader)

同样能解决视图不更新的问题,这个方法也可以用在行新增中,这里是分别列了两种方法而已。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值