vue自定义组件实现父子组件数据双向绑定

假设我们正在开发一个自定义选择组件,该组件允许用户从下拉列表中选择一个选项,但我们希望仅在用户选择发生改变时更新父组件的数据,这时可以利用 model: { event: ‘change’ } 来实现:

<!-- CustomSelect.vue -->
<template>
  <select @change="onChange">
    <option v-for="option in options" :key="option.value" :value="option.value">
      {{ option.text }}
    </option>
  </select>
</template>

<script>
export default {
  model: {
    prop: 'modelValue',
    event: 'change'
  },
  props: {
    modelValue: [String, Number],
    options: {
      type: Array,
      default: () => []
    }
  },
  methods: {
    onChange(event) {
      this.$emit('change', event.target.value);
    }
  }
}
</script>

在这个组件中,我们监听了 的 change 事件,并在这个事件触发时,通过 $emit 发出了一个名为 change 的事件,同时将选中的值作为参数传递。这样,当使用 v-model 绑定这个组件时,Vue知道应该在 change 事件触发时更新数据,而不是默认的 input 事件。

父组件中的应用

现在,假设我们有一个父组件,需要使用这个自定义选择组件:

<template>
  <div>
    <custom-select v-model="selectedOption" :options="options"></custom-select>
    <p>选中的值:{{ selectedOption }}</p>
  </div>
</template>

<script>
import CustomSelect from './CustomSelect.vue'

export default {
  components: {
    CustomSelect
  },
  data() {
    return {
      selectedOption: '',
      options: [
        { value: 'option1', text: '选项1' },
        { value: 'option2', text: '选项2' },
        // 更多选项...
      ]
    }
  }
}
</script>

在父组件中,通过 v-model 绑定 selectedOption 到 CustomSelect 组件。由于 CustomSelect 组件通过 model: { event: ‘change’ } 定义了使用 change 事件来更新 v-model 绑定的值,因此当用户更改选择时,selectedOption 的值将相应更新,并在界面上实时反映出来。

相关推荐

  1. vue定义组件实现父子组件数据双向

    2024-03-27 14:16:03       39 阅读
  2. vue3组件数据双向

    2024-03-27 14:16:03       55 阅读
  3. Vue 双向数据

    2024-03-27 14:16:03       40 阅读
  4. vue2 双向数据实现及原理

    2024-03-27 14:16:03       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-27 14:16:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-27 14:16:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-27 14:16:03       87 阅读
  4. Python语言-面向对象

    2024-03-27 14:16:03       96 阅读

热门阅读

  1. 网络连接中——长连接和短连接详解

    2024-03-27 14:16:03       40 阅读
  2. 物联网(IoT)常用的通信协议

    2024-03-27 14:16:03       41 阅读
  3. deepspeed chat RLHF 个人笔记(待完成)

    2024-03-27 14:16:03       43 阅读
  4. 【Postman】如何给请求的参数设置随机数

    2024-03-27 14:16:03       39 阅读
  5. excel创建和部分使用

    2024-03-27 14:16:03       41 阅读
  6. 数据结构链栈实现(c语言)

    2024-03-27 14:16:03       45 阅读
  7. 软件工程的相关知识点

    2024-03-27 14:16:03       37 阅读
  8. 使用 React Hooks 管理状态和引用

    2024-03-27 14:16:03       38 阅读
  9. Web开发:深入探讨React Hooks的使用和最佳实践

    2024-03-27 14:16:03       38 阅读
  10. mysql怎么创建索引?

    2024-03-27 14:16:03       33 阅读