如何在VUE中同时使用v-model和v-model.trim

以下是我的代码:

<input type="text" id="first_name" class="form-control" v-model="user.attributes.first_name"
                       @keyup.enter="updateProfile" v-model.trim="$v.first_name.$model"
                       :class="{'is-invalid':$v.first_name.$error, 'is-valid':!$v.first_name.$invalid}">

我在表单中使用vuelify来验证我的输入域。但同时,我将User对象作为道具,并希望将对象的名字显示为输入字段的值。由于我修剪了输入字段的值,我想我不能再使用v-model来显示我的值了。您对此有什么解决方案吗?


解决方案

首先,同一元素上不能有多个v-model

然后,如果要将道具用作v模型,则必须自己设置@input事件。

cfvuelidate documentation

<template>
 <input v-model.trim="$v.first_name.$model" @input="updateFirstname">
</template>

<script>
export default {
  props: {
     user: Object
  },
  validations: {
     first_name: { ... }
  },
  methods: {
    updateFirstName(newFirstName) {
      this.user.attributes.first_name = newFirstName
      this.$v.first_name.$touch()
    }
  }
}
</script>

相关文章