Naive中form表单验证总是重复提示一个值,无法实时验证表单中信息。:model和v-mode的区别。

29 阅读1分钟

原错误代码:

<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>