vue中对象赋值但是视图不更新的问题

发布于 2022-09-11 23:34:28 字数 551 浏览 9 评论 0

图1:
1.png
图2:
2.png
图3:
3.png
图4:
4.png
图5:
5.png

RT,当前赋值方式是直接将一个对象赋值给另一个对象,因为是要将一个表单修改掉,我因为测试需要,把index写死掉了【图4是为了可以看到Form和Table的关系所以选了第5条,不是第0条,请略过这个细节】,这个Table是嵌套在Dialog里面的,现在测试控制台输出的两次结果不同,说明确实赋值成功了,但是视图不知为啥没更新,还是原先的样子【见图1~4】

但是如果写成 “对象.属性” 这样的赋值就可以触发视图更新【见图5】

求大佬。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苯莒 2022-09-18 23:34:28

这样肯定没问题 this.$set(this.tableData,index,obj); 将tableData里面下表为index的元素用obj 进行替换;
let obj = Object.assgin({},this.tableData[index]); 后面你修改obj就好了,最后this.$set(this.tableData,index,obj)

二手情话 2022-09-18 23:34:28

ES5中无缝对数组变化进行监听。所以在vue中使用 array[0] = 1 视图是不会同步变更的,应该使用数组变异方法 splice,pop,push等方法进行数组修改,或者使用vue自带的 this.$set(array, index, data) 进行数组修改
比如:
this.data.splice(0,1, 100)
this.$set(data, 1, 100)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文