场景
动态生成组件时,动态为表单添加属性,同时使用v-model以数组形式访问表单属性。通过监听表单对象,发现并未实施更新。
原因
vue2无法监听数组索引一系列操作,从而不能及时响应。vue2是通过Object.definePropertys实现响应式的,需要传入每一个对象的属性才能实现响应式。对于数组,操作索引下标是个缺陷,可以自己手动实现,不过比较麻烦。vue3使用Proxy方式就避免了这一情况。
修改
res.data.map(item => {
this.$set(this.formData, item.field_id, undefined);
});