当前位置:   article > 正文

vue3从精通到入门20:v-model使用

vue3从精通到入门20:v-model使用

v-model 是一个用于在表单输入元素和组件之间进行双向数据绑定的指令。它简化了在父组件和子组件之间同步数据的过程,特别是在处理表单输入时。

基本用法

在模板中,v-model 通常与表单输入元素(如 <input>、<textarea> 或 <select>)一起使用,它将输入元素的值与组件的某个 data 属性进行双向绑定。

  1. <template>
  2. <form>
  3. <input v-model="message" placeholder="edit me">
  4. <p>Message is: {{ message }}</p>
  5. </form>
  6. </template>
  7. <script setup lang="ts">
  8. import { ref } from 'vue';
  9. const message = ref('');
  10. </script>

在这个例子中,message 是一个响应式引用(ref),它与 <input> 元素的值进行双向绑定。当用户在输入框中键入时,message 的值会自动更新,反之亦然。

自定义组件中的 v-model 

v-model 的工作方式有所改变,它现在基于 modelValue 作为 prop 和 update:modelValue 作为事件。这使得 v-model 在自定义组件中更加灵活和可配置。


下面是一个自定义输入框组件的例子,它使用 v-model 进行双向数据绑定:

  1. <template>
  2. <input
  3. :value="modelValue"
  4. @input="updateValue($event.target.value)"
  5. type="text"
  6. placeholder="Custom Input"
  7. />
  8. </template>
  9. <script setup lang="ts">
  10. import { defineProps, defineEmits } from 'vue';
  11. const props = defineProps({
  12. modelValue: {
  13. type: String,
  14. default: ''
  15. }
  16. });
  17. const emit = defineEmits(['update:modelValue']);
  18. const updateValue = (value: string) => {
  19. emit('update:modelValue', value);
  20. };
  21. </script>

在这个自定义组件中,我们定义了一个 modelValue prop 来接收父组件传递的值,并使用 update:modelValue 事件来通知父组件值的变化。当输入框的值发生变化时,我们调用 updateValue 方法并触发 update:modelValue 事件,将新的值传递给父组件。

在父组件中使用自定义组件的 v-model

现在,我们可以在父组件中使用这个自定义输入框组件,并使用 v-model 进行双向数据绑定

  1. <template>
  2. <CustomInput v-model="customMessage" />
  3. <p>Custom message is: {{ customMessage }}</p>
  4. </template>
  5. <script setup lang="ts">
  6. import { ref } from 'vue';
  7. import CustomInput from './CustomInput.vue';
  8. const customMessage = ref('');
  9. </script>

在这个父组件中,我们引入了 CustomInput 组件,并使用 v-model 将 customMessage 与组件的 modelValue 进行绑定。当用户在自定义输入框中键入时,customMessage 的值会自动更新,反之亦然。

注意事项

  • v-model 默认使用 value 作为 prop 和 input 作为事件,但在自定义组件中,你可以使用 modelValue 作为 prop 和 update:modelValue 作为事件来替代它们。
  • v-model 也可以用于处理数组或对象等复杂数据类型,但你需要确保在自定义组件中正确处理这些类型的更新。
  • 在处理表单验证或复杂逻辑时,可能需要结合使用 watch 或计算属性来监听 v-model 绑定的值的变化。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/428659
推荐阅读
相关标签
  

闽ICP备14008679号