Vue 中 父子组件之间的 v-model 双向绑定

本文介绍了在Vue中如何实现父子组件间的v-model双向绑定,通过value和@input模拟v-model功能,并结合vant弹框组件展示了实际应用场景,详细解释了如何在子组件中改变值并让父组件响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

父子嵌套关系的 双向绑定

简而言之 在父组件改变值 会响应到子组件 在子组件中改变 也会响应到父组件中

v-model ‘解体’

v-model 的双向绑定功能 可以用 value 和 @input 来模拟

演示v-model 的解体功能
父组件

引入子组件 在子组件上利用双向绑定 这里的v-model 可以理解为 :value =“an” @input="$emit.target.value"

<template>
  <div>
<son-zi v-model="an"></son-zi>
  </div>
</template>

<script>
import sonZi from './son.vue'
  export default {
      data() {
          return {
              an: 1000
          }
      },
      components: {
          sonZi
      }
}
</script>

<style lang="less" scoped>
</style>

	
子组件

接受 父组件传递过来的值 并且再传递过去 ,这样即使在 子组件中改变这个值 父组件也会响应

<template>
  <div>
<v-input :value="value" @input="$emit.target.value">
</v-input>
  </div>
</template>

<script>
  export default {
      props: ['value']
}
</script>

<style lang="less" scoped>
</style>

下面 用vue 中 vant的弹框组件来掩饰

需求 点击按钮 显示弹框 但是弹框插件时独立的。 点击按钮 按钮给弹框传值 再点击 旁边 弹框按钮 又会 使 value 变为 false 返回 值给 按钮组件 使按钮组件的 an 变为false

弹框插件
<template>
<!-- 不感兴趣组件 -->
<van-dialog
:value="value"
@input="$emit('input')"
 :show-confirm-button="false"
  close-on-click-overlay
 show-cancel-button>
</van-dialog>
<!-- 这里面 :value 和 @input 是 v-model的解体   -->
<!-- : value 是传递过来的值  而  @input 是向父级响应的值 -->
 <!-- :show-confirm-button="false"  // 不显示 “确定” 按钮 -->
  <!-- close-on-click-overlay // 点击旁处关闭对话框 -->
</template>

<script>
export default {
 
  props: {
    value: {
      type: Boolean,
      default: false // 默认值
    }
  }
}
</script>

<style lang="less" scoped>
</style>

按钮组件

   <template>
<dis-like v-model="an"></dis-like>
</template>
<script>
import disLike from './dislike.vue'
export default {
  data () {
    return {
      an: false
    }
  },
 components: {
    disLike
  },
}
</script>

<style lang="less" scoped>
</style>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值