背景:今天提测前端Vue项目时,被测试同学发现了个bug。在表单input输入框绑定赋值时,执行清空方法后,输入框的数据还存在,没有被清空,但是通过debug发现数据已经变化了,只是表单视图没更新。
解决:首先:代码里的Vue对象赋值是
form.code = 'aa'
或者
form[code] = 'aa'
debug查看数据已修改,但是视图没生效。
其次:想到Vue中所有数据都是需要受到监测的,但页面中有时候涉及到组件调用或者计算比较复杂的情况下,这种监测有时候会被忽略,就需要用到vue的显式赋值。
Vue.set(form,'code','aa')
但是还是不生效呀,思虑良久不知道咋解决。
最后: 随后又一想,是不是没有赋值初始化造成的呢?然后在初始化表单时,增加了code的初始化赋值 form.code = '' ,启动服务测试成功。
结论:Vue的双向绑定对于对象复杂操作后赋值时要显式赋值Vue.set,而且也要做好初始化表单属性。