vue组件里改变对象的属性,视图不刷新的问题

在vue的data数据中心定义一个对象collocateval,然后在触发事件时给collocateval添加或修改属性的时候,页面中的视图不会同步更新,只有当其他数据发生改变时,视图才会同步更新数据
代码如下:

clipboard.png
用了vue.set感觉也没有用啊。

clipboard.png
还是只有当其他数据发生改变时,视图才会同步更新数据。
明明也有引入vue实例啊
clipboard.png
是不是在组件里写法不对,求大神告知。

阅读 5.1k
2 个回答

Vue 基于 Object.defineProperty,通过把属性替换成 getter/setter 来实现近乎无痛的状态侦听。这个过程在组件初始化时进行,所有你定义的变量的属性,都被替换了。

所以如果你在实例化完成后在赋值,就真的只是赋值,而不是调用 setter,所以就会失去响应式。

解决方案是使用 Vue.set,或者赋值整个对象。

this.collocateval = {state: 1}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题