在开发过程中,我们时常会遇到这样一种情况:当vue的data里边声明或者已经赋值过的对象或者数组(数组里边的值是对象)时,向对象中添加新的属性,如果更新此属性的值,是不会更新视图的。
今天在开发的时候,做一个选中,多选的效果时,直接给数据新增一个属性,然后赋值用于dom渲染判断选中样式,但是点击修改data数据,却没有及时对dom元素进行渲染,没有实现选中效果,原因肯定是没有实时修改dom,根据官方文档定义:如果在实例创建之后添加新的属性到实例上,它不会触发视图更新。这时候,我就想到了vue提供的$set方法,对于set方法的使用,则需要注意一些细节:
- set方法对象里面应该有对应的初始值,像我一开始这样对每一项添加isChecked去用set修改就不行,后来我在获取数据哪里改了一下,看图2就OK了