问题描述
element-ui组件表单中某个select选择器无法显示选中的内容的,其他的select,都可以,就新添加的不行。
发现
网上查找之后,找到下面链接的解决办法,升级版本的省略,强制this.$set()方法也不行,
https://segmentfault.com/q/1010000009295579
后来发现,是在data()中没有初始化。
解决办法
在data()中相应的对象里初始化一下即可。
原因
vue在创建实例的时候把data深度遍历所有属性,并使用 Object.defineProperty 把这些属性全部转为 getter/setter。让 Vue 追踪依赖,在属性被访问和修改时通知变化。所以属性必须在 data 对象上存在才能让 Vue 转换它,这样才能让它是响应的。
vue中检测不到对象属性的添加和删除,在对象上新加了一个属性newProperty,当前新加的这个属性并没有加入vue检测数据更新的机制(因为是在初始化之后添加的),vue.$set是能让vue知道添加了属性, 它会做处理。参考
https://juejin.im/post/5ad56d86518825556534ff4b