描述下出现的bug
1 使用el-autocomplete的时候,如果输入的查询参数正好与最后查询出来的结果一样的话,则不会触发主动验证
2 像upload组件等,不能直接写v-model的组件,在进行操作的时候也会有这个问题
简单来说,就是 一般v-model的都没事,出事的一般都是自己封装的组件,通过@change去赋值的~
这里,如果输入‘大毛’然后进行选择的话,则会触发trigger中的change;
但是,如果输入‘李大毛’再点击下拉的话,则不会再触发change(这个应该是el-input封装中的change)了
解决办法
validateField 手动验证
<el-form :model="form" ref="form" :rules="rules">
<el-form-item label="客户姓名:" prop="customerId">
<v-uservague :iscommission="true" placeholder="姓名/昵称/注册手机号/档案编号" @userVagueChange="userVagueChange"></v-uservague>
</el-form-item>
rules: {
customerId: [{ required: true, message: '请输入客户姓名', trigger: 'change' }],
}
userVagueChange(val) {
this.form.customerId = val.userId
// 赋值之后再手动走一次rules中的customerId规则
this.$refs.form.validateField('customerId', (err) => { })
}
// 当然,如果是 prop="personInfo.customerId"这种验证规则的话,也是一样的
<el-form :model="form" ref="form" :rules="rules">
<el-form-item label="客户姓名:" prop="personInfo.customerId">
<v-uservague :iscommission="true" placeholder="姓名/昵称/注册手机号/档案编号" @userVagueChange="userVagueChange"></v-uservague>
</el-form-item>
rules: {
'personInfo.customerId': [{ required: true, message: '请输入客户姓名', trigger: 'change' }],
}
userVagueChange(val) {
this.form.personInfo.customerId = val.userId
// 赋值之后再手动走一次rules中的customerId规则
this.$refs.form.validateField('personInfo.customerId', (err) => { })
}