Vue Element UI 的级联选择器视图不实时更新问题

2021-08-22 14:38:34 +08:00
 tlerbao

问题

监听一数据的变化从而改变一个 级联选择器 的数据源 options,结果发现,似乎监听数据变化后,只在激活级联选择器的第一次页面根据新的改变后的 数据源 渲染了,此时监听数据再变化,页面上级联选择器的数据源依然是上次激活的样子。

这是渲染问题?控制台 log 发现数据源已经变了,但是视图不能实时更新。

代码

watch: {
    'formFieldsData.department': {
      handler(newVal, oldVal) {
		// 下面 this.departmentsLeader 就是级联选择器的数据源
        const data = this.departments
        // 无论是直接赋值还是用 set 都一样的结果
        // data 是个树形结构数据 addDisabled 用来遍历结构增加 disabled 属性
        // this.departmentsLeader = this.addDisabled(data, newVal)
        this.$set(this.departmentsLeader, this.addDisabled(data, newVal))
        console.log(this.departmentsLeader)
      }
    }
  },
837 次点击
所在节点    问与答
4 条回复
jqtmviyu683
2021-08-22 15:15:22 +08:00
this.$set(obj, key, value), 是不是传参错了。
shilianmlxg
2021-08-22 15:15:51 +08:00
一切操作数组的 最后要 this.$forceUpdate()
tlerbao
2021-08-22 18:47:54 +08:00
@jqtmviyu683 据说 this.$set(你的属性名字, 你的值) 如果是对象 this.$set(对象名字, 对象属性, 对象的值),我这么搞也不报错,其实也更新了数据的。

@shilianmlxg 小哥,this.$forceUpdate() 也没用...很难受
en20
2021-08-23 15:49:41 +08:00
1. 把源数据复制一份
2. 修改了里面的对象
3.把数组引用改掉

this.departmentsLeader = [...this.departmentsLeader]

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/797296

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX