原错误代码:
<n-form :rules="rules" v-model="admin">
<n-form-item path="account" label="账号">
<n-input v-model:value="admin.account" placeholder="请输入账号" />
</n-form-item>
<n-form>
let rules = {
account: [
{required: true, message: "请输入账号", trigger: "blur"},
{min: 3, max: 12, message: "账号长度在3-12字符之间", trigger: "blur"}
]
}
const admin = reactive({
account: "",
})
错误原因:使用了v-model,导致view层和model层双向绑定。无论view层输入什么值,model层的account都等于"",从而映射到view层。所以在表单验证的时候,无论输入什么rules都判定表单为空,输出message: "请输入账号" 。
应使用:model="admin",view层的数据可以传递到model层,但是model层的数据无法传到view层
<n-form :rules="rules" :model="admin">
<n-form-item path="account" label="账号">
<n-input v-model:value="admin.account" placeholder="请输入账号" />
</n-form-item>
<n-form>