vue 父组件通过v-model接收子组件的值的代码

当一个子组件改变了它的状态时,父组件也会相应地随着子组件改变。Vue提供了 v-model 指令来实现这种双向绑定的效果。在子组件中,要使用 this.$emit('input', value) 将数据通过 input 事件的方式发送到父组件中,然后父组件通过 v-model 指令绑定这个事件和值即可。

举例来说,我们现在有一个父组件 Parent.vue 和一个子组件 Child.vue,其中 Child.vue 是一个输入框组件,父组件需要根据该输入框的值显示一些特定内容。具体实现的步骤如下:

  1. Child.vue 中,定义一个 value 变量,并在输入框上绑定 v-model="value"
<template>
  <div>
    <input type="text" v-model="value" />
  </div>
</template>

<script>
export default {
  data() {
    return {
      value: '',
    };
  },
  mounted() {
    // 组件挂载后,给输入框赋默认值
    this.value = 'Hello World';
  },
  watch: {
    value(newValue) {
      // 监听输入框的值,当发生改变时触发 input 事件
      this.$emit('input', newValue);
    },
  },
};
</script>
  1. Parent.vue 中,引入 Child.vue 组件,并在组件上使用 v-model 指令绑定父组件的值:
<template>
  <div>
    <Child v-model="parentValue" />
    <p>父组件的值:{{parentValue}}</p>
  </div>
</template>

<script>
import Child from './Child.vue';

export default {
  components: {
    Child,
  },
  data() {
    return {
      parentValue: '',
    };
  },
};
</script>

在上面的代码中,我们将 Child.vue 组件引入到了 Parent.vue 中,并在组件上使用了 v-model="parentValue",父组件的值 parentValue 就通过 input 事件传递给了子组件 Child.vue

当我们在输入框中输入数据时,Child.vue 组件中的 watch 监听器会检测到数据的变化,然后通过 $emit 方法将这个变化通过 input 事件发送到父组件 Parent.vue 中,然后 v-model 绑定的 parentValue 也同时发生了变化,最后通过插值的方式输出 parentValue 的值。

下面再给出一个示例,演示如何在子组件中通过 emit 方法发送自定义的事件和值,然后在父组件中监听这些事件,并修改相应的数据。

  1. Child.vue 中,定义一个点击按钮,当点击该按钮时,向父组件传递一个自定义的事件和值:
<template>
  <div>
    <button @click="emitCustomEvent">点击我,通知父组件</button>
  </div>
</template>

<script>
export default {
  methods: {
    emitCustomEvent() {
      const eventData = {
        name: 'custom event',
        value: Math.random(),
      };
      // 通过自定义事件名和数据,向父组件发送数据
      this.$emit('custom-event', eventData);
    },
  },
};
</script>
  1. Parent.vue中,监听自定义事件,并修改对应的数据:
<template>
  <div>
    <Child @custom-event="handleCustomEvent" />
    <p>父组件监听到子组件发送的自定义事件:{{customStr}}</p>
  </div>
</template>

<script>
import Child from './Child.vue';

export default {
  components: {
    Child,
  },
  data() {
    return {
      customStr: '',
    };
  },
  methods: {
    handleCustomEvent(data) {
      // 监听到自定义事件后,修改数据
      this.customStr = `事件名称: ${data.name}, 随机数: ${data.value}`;
    },
  },
};
</script>

在上面的代码中,我们先在 Child.vue 中定义了一个 emitCustomEvent 方法,然后在这个方法中通过 $emit 方法向父组件发送一个自定义事件 custom-event,并且传递了一个对象 {name: 'custom event', value: Math.random()}

Parent.vue 中,我们引入了 Child.vue 组件,并通过 @custom-event="handleCustomEvent" 监听子组件发送的自定义事件,当监听到该事件时,就触发 handleCustomEvent 方法,并修改 customStr 的值。

通过上述两个示例的说明,可以很好地理解如何在 Vue 的父子组件之间进行双向绑定和事件传递。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue 父组件通过v-model接收子组件的值的代码 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 从零开始用webpack构建一个vue3.0项目工程的实现

    下面我来详细讲解“从零开始用webpack构建一个vue3.0项目工程的实现”的完整攻略。 1. 安装webpack和vue-cli 首先需要安装Node.js和npm,然后可以使用npm安装webpack和vue-cli。 在终端中执行以下命令: npm install webpack webapck-cli -g npm install -g @vue/…

    Vue 2023年5月28日
    00
  • 详解mpvue开发小程序小总结

    详解mpvue开发小程序小总结 什么是mpvue mpvue是一种基于 Vue.js 的小程序前端框架,它能够将Vue.js中的组件化开发、模块化、路由等特性也带到小程序的开发中,大大提高了小程序的开发效率。 mpvue可以利用Vue.js的生态系统,包括Vuex、Vue-router以及其他大量的插件和库,同时也兼容小程序的原生API和组件。mpvue还提…

    Vue 2023年5月27日
    00
  • 详解Vue中localstorage和sessionstorage的使用

    详解Vue中localStorage和sessionStorage的使用 简介 对于一些 Vue.js 开发者来说,localStorage 和 sessionStorage 是存储数据的不错选择,本文将详细介绍这两个 API 的使用,同时说明如何在 Vue.js 组件中使用它们。 localStorage localStorage 是 Web Storag…

    Vue 2023年5月27日
    00
  • 浅析vue3响应式数据与watch属性

    浅析Vue3响应式数据与watch属性 什么是Vue3响应式数据? 在 Vue3 中,响应式数据是通过函数 reactive() 创建的一个响应式对象,它通过 Proxy 对象来监听对象的变化,使得当对象发生改变时,视图会自动更新。我们可以通过下面的代码来创建一个响应式对象: import { reactive } from ‘vue’ const stat…

    Vue 2023年5月27日
    00
  • vue router返回到指定的路由的场景分析

    下面是关于“Vue Router返回到指定的路由的场景分析”的完整攻略。 1. 场景描述 在使用Vue Router构建单页应用程序时,我们可能会遇到需要在路由之间来回切换的情况。有时,我们需要从一个页面返回到上一级页面,而又不想回到整个路由的初始状态,而是要返回到之前指定的某个路由,这时就需要用到Vue Router返回到指定路由的功能了。 2. 方案分析…

    Vue 2023年5月28日
    00
  • 简单聊聊vue3.0 sfc中setup的变化

    下面我就为大家详细讲解一下“简单聊聊vue3.0 sfc中setup的变化”。 一、什么是.vue文件 在介绍.vue文件的地方,就不得不介绍一下 Vue.js 了。Vue.js 是一款非常流行的前端框架,主要用于构建用户界面以及单页应用程序(SPA)。而.vue文件则是 Vue.js 在开发中所使用的组件文件格式,它可以包括 HTML、CSS 和 Java…

    Vue 2023年5月28日
    00
  • vue组合式API浅显入门示例详解

    我来为你详细讲解“vue组合式API浅显入门示例详解”的攻略。 1. 什么是Vue组合式API 在Vue 3.x版本中,新增了一种API叫做“组合式API”,它能够让我们更加灵活地组织和复用组件逻辑。我们可以使用组合式API来处理一些复杂、高级的场景,或者是为了提高组件的可读性和可维护性。相较而言,Vue 2.x版本中的选项API则更偏向于面向对象的方式去编…

    Vue 2023年5月28日
    00
  • 详解在Vue.js编写更好的v-for循环的6种技巧

    当使用Vue.js编写v-for循环时,我们经常会遇到一些常见的问题,例如渲染列表不够高效、循环嵌套过多等。为了优化循环的性能并提高代码的质量,我们可以采用以下6种技巧。 技巧一:key属性的使用 在使用v-for循环渲染列表时,一定要为循环中的元素添加key属性。这样做的好处是告诉Vue.js循环中的每一个元素都是唯一的。使用key属性可以提高渲染的性能,…

    Vue 2023年5月29日
    00
合作推广
合作推广
分享本页
返回顶部