根据uView官网的Form表单使用方法,就算直接复制官网的使用方式,在submit时也无法进入this.$refs.uniForm.validate()之中,导致表单无法验证进行提交.
输出:console.log(this.$refs.uniForm.validate())一直输出状态,后面使用.then进行接收才能进入状态。
官网测试的代码如下
<template>
<view class="">
<u-form :model="form" ref="uForm">
<u-form-item label="姓名" prop="name">
<u-input v-model="form.name" />
</u-form-item>
</u-form>
<u-button @click="submit">提交</u-button>
</view>
</template>
<script>
export default {
data() {
return {
form: {
name: '',
},
rules: {
name: [
{
required: true,
message: '请输入姓名',
trigger: ['blur', 'change']
}
]
}
};
},
methods: {
submit() {
this.$refs.uForm.validate(valid => {
if (valid) {
console.log('验证通过');
} else {
console.log('验证失败');
}
});
}
},
// 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
onReady() {
this.$refs.uForm.setRules(this.rules);
}
};
</script>
修改后
methods: {
submit() {
this.$refs.uForm.validate().then(res => {
if (valid) {
console.log('验证通过');
} else {
console.log('验证失败');
}
});
}
},
不确定这样对不对,但是官网那种方法一直没法解决,如果有解决办法,望告知。