最近碰到了一个需求,让一个字段动态设置必填和非必填
借鉴了https://blog.youkuaiyun.com/weixin_37865166/article/details/92431597这篇文件,默认在初始页面完成后
computed: {
isHaveTo: function() {
return this.isOfficeHaveTo
}
},
此处需要注意的是isHaveTo的初始化。 而isOfficeHaveTo则是根据数据和字段,动态更改的的属性。
isHaveTo的用法:


所有的都已经完成,但是在编辑反显的时候,默认点开页面直接提示该字段不能为空,而我又打印了数据发现没有问题,第一时间想的是没有用set去更新一遍数据,发现之后还是不行,又用了this.set去更新一遍数据,发现之后还是不行,又用了this.set去更新一遍数据,发现之后还是不行,又用了this.nextTick(() => {})中设置$set,isOfficeHaveTo为true或者false。
其实逻辑没问题,排除了不是表单验证有问题之后发现,这个字段动态判断了input框和el-select多选框是否哪个去显示,两个的v-model名字不同,而且prop只用了input框的v-model
解决办法:
分两个el-form-item,每个prop对应v-model,这样就不会出现反显的时候,验证不通过的问题了。


博客讲述了在Vue项目中使用ElementUI时遇到的一个问题,即el-select多选框在动态设置必填和非必填状态时,表单验证无法正常通过。作者在尝试了多种解决方案,如初始化isHaveTo属性、使用this.nextTick更新数据等后,最终发现是因为同一个el-form-item中,input框和el-select的v-model不同,但prop只设置了input框的v-model导致的。解决方法是将输入框和选择框分开为两个el-form-item,分别绑定不同的prop,从而确保反显时验证正确。
1187

被折叠的 条评论
为什么被折叠?



