data
中有
watch
监听form
直接用 this.form.cat_id=1_7eb3340579783ab51bf7e110f7a4f397
,输出this.form
如下,watch
不起效
使用 this.$set(this.form,'cat_id','1_7eb3340579783ab51bf7e110f7a4f397')
,输出this.form
如下,watch
起效
我更加不理解的是用this.form.xx=yy
修改其他值,功能又正常,这会是什么原因
我发现有个规律
form.cat_id
在 data
中赋值为 空字符串,this.form.cat_id="xxx"
不会触发 watch
form.cat_id
在 data
中赋值为非空字符串,this.form.cat_id="xxx"
会触发 watch
form.p
在 data
中赋值为 数值 1,this.form.o=2
则会触发 watch
我测试了一下,我这边第一种形式也是可以的;
第一张截图:
明显
p
和q
属性应该是watch
的,因为下面都有相应的get
和set
方法,但是并没有cat_id
的get
和set
方法,也就是你的form
里面的cat_id
一开始的时候并没有设置进去(至于为什么,我也不知道),也就是一开始form
里面并没有cat_id
属性,所以使用this.form.cat_id = ...
属于新增属性,并不能被watch
到,新增属性只能通过this.$set
的形式被watch。因为
q
和p
都有get
和set
方法,那应该就是正常watch
的,所以那样修改没有问题。你是不是在某个地方删除过
cat_id
这个属性?