一直被这个问题坑好几次了 真是气死,找了好久的原因 (主要原因还是数据更新了视图未更新,校验数据未更新导致)
后来写了个demo试了一下,
详情页面-数据回显-- 有数据--提交时有校验,但未通过,
解决方法:
demo代码:
重点代码--:key='keydata',在需要变化的地方 改变keydata 值,(强制刷新无效但这个有效,nice)
<!-- 临床信息 -->
<template>
<view>
<u--form class="formData" labelWidth='auto'
labelPosition="top" :model="formData" :rules="rules" ref="formData"
:key='keydata'>
<u-row>
<u-col span="3">
<u-form-item label="年龄(岁)" prop="nl" :required="true">
<u--input
v-model="formData.nl"
type="number" placeholder='' min="0" max="100"
oninput="value=value.replace(/[^0\d]/g, '')"
></u--input>
</u-form-item>
</u-col>
</u-row>
<u-row justify="center" gutter="20">
<u-col span='2'>
<view>
<u-button type="primary"
@click="addSave('formData')" text="保存">
</u-button>
</view>
</u-col>
</u-row>
</u--form>
</view>
</template>
<script>
export default {
data() {
return {
formData:{
nl:''
},
rules:{
nl: {
required: true,
message: '请输入年龄',
trigger: ['blur','change']
},
},
keydata:'1'
}
},
mounted(){
this.keydata++;
let obj={
nl:32
};
this.formData=obj;
},
methods: {
// 页面保存提交
addSave(formName){
this.keydata++;
console.log('保存数据:',this.formData);
this.$refs.formData.validate().then(async res => {
console.log('验证通过');
}).catch(errors => {
console.error('请仔细检查表单:',errors);
uni.$u.toast('请仔细检查表单')
})
},
}
}
</script>
<style>
</style>