开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详情
整个前端框架是使用若依那一套框架,组件使用的是 ant-design-vue
需求就是在一个页面中分为三级指标,如果添加的是下级指标就需要通过下拉框指定上级指标,通过选中的指标级别动态生成上级指标,大致的页面:
问题就出现在下面那个 上级指标 的下拉框中,通过循环动态生成的使用
v-model="submitData.parentCategoryId"进行绑定后发现可以正常的回显数据,但是选中的时候就出问题了,当我选中另外的选项时 select 框并不会正常选中另外的选项,而是固定显示从编辑页面回显过来的值。找了很多方法都不行,也想过是不是因为页面还没有渲染出来就给绑定的字段赋值,所以尝试了一下延迟赋值还是不行
setTimeout(() => { // 添加延时操作
this.submitData.parentCategoryId = data.parentCategoryId
}, 100)
然后又考虑是不是因为绑定的问题,又把绑定的代码进行修改:
:v-model="submitData.parentCategoryId",发现好像可以选中了,哦吼但是又出现了另外要给问题,竟然不回显了。
最后又改回去了,最终发现了问题所在,因为页面初始化的时候 submitData 对象的值为空,虽然初始化了但只是初始化了submitData 对象,对应绑定的 parentCategoryId 属性并没有初始化所以没法正确的绑定,每次重新生成下拉框又会清除掉对应的 parentCategoryId,所以改了一下在初始化和重新生成的时候初始化submitData 并且把 parentCategoryId属性也一并初始化了。
submitData: {
parentCategoryId:''
},
注意:所以在写 vue 相关组件的时候一定要先初始化对象中所有属性,否则就会造成一些不可预知的错误