1.产生问题的原因是点击获取数据,再给表单赋值,此时赋值的属性不是响应式的,校验会无法通过;
2.解决方法,把相应的校验数据改为响应式即可,相关方法如下:
1.使用vue提供的vm.$set()方法,给对象增加属性值
// 这样obj的b属性就为响应式数据了
this.$set(this.obj,'b',2)
2.如果要为对象赋值多个属性,则可以用Object.assign()
// 用原对象与要混合进去的对象的 property 一起创建一个新的对象。
this.obj = Object.assign({}, this.obj, { a: 1, b: 2 })
3.还有一种方法,使用es6的对象扩展运算符
this.obj.a = 1;
this.obj.b = 2;
this.obj = {...this.obj}; // 这里扩展运算符实质是深拷贝对象的属性