vue父子组件v-model传值

1、常规用法

(1)父组件传值给子组件,通过props接收父组件的传的值。子组件传值给父组件,通过$emit()事件分发向父组件传值。

父组件中 定义:isDomDialog传值 :

<DomDialog :isDomDialog="isDomDialog" @getValue="getVal"></DomDialog>

子组件中接收:

props:{
    isDomDialog:{type: Boolean,}
},
data(){
    return {
      dialogVisible:false,
    }
},
watch:{
    isDomDialog(val){
      this.dialogVisible = val
    }
},

子组件传值$emit():

 methods: {
    // 关闭弹窗触发
    confrim(){
      this.$emit('getValue',false)
    }
  },

父组件@getValue="getVal"接收:

methods: {
    getVal(val){
      this.isDomDialog = val
    }
  },

2、父子组件的v-model传值

(1)先看官方文档
在这里插入图片描述

(2)在父组件中:

<DomDialog v-model="isDomDialog"></DomDialog>    

等同于如下常规写法:

<DomDialog v-bind:value="isDomDialog" v-on:input="isDomDialog=$event"></DomDialog> 

或者

<DomDialog :value="isDomDialog" @input="isDomDialog=$event"></DomDialog>

(3)在子组件中的接收与传值:

props:{
    value:{type: Boolean,},
  },
  data(){
    return {
      dialogVisible:false,
    }
  },
  watch:{
    value(val){
      this.dialogVisible = val
    },
  },
  methods: {
    // 关闭弹窗触发
    confrim(){
      this.$emit('input',false)         // 通过 this.$emit() 向父组件传值
    }
  },

3、父子组件通信refs和parent

(1)在父组件中html代码:

<el-button @click="clickedBut">点击</el-button>
<DomDialog ref="child"></DomDialog>  

js代码通过$refs调用子组件:

data(){
    return{
      parentData:'111',
    }
  },
  components:{DomDialog},
  methods: {
    clickedBut(){
      this.$refs.child.dialogVisible = true        // 给子组件声明的变量dialogVisible赋值
      this.$refs.child.handle()                    // 调用子组件的 handle() 方法
    },
    parentHandle() {
      alert("成功调用父组件方法")
    }
  },

(2)在子组件中js代码,通过$parent调用父组件:

data(){
    return {
      dialogVisible:false,
    }
  },
  methods: {
    // 关闭弹窗触发
    confrim(){
      this.dialogVisible = false
      this.$parent.parentData = "123456"   // 改变父组件声明的变量parentData
      this.$parent.parentHandle()          // 调用父组件的 parentHandle() 方法
    },
 
    handle() {
      alert("成功调用子组件方法!")
    }
  },
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue组件中,v-model可以用于实现子组件与父组件之间的双向数据绑定。具体的传值过程如下: 1. 在子组件中,使用props来定义需要接收的value参数。例如props: { value: [String, Object] }。 2. 在子组件中,使用watch来深度监听value的变化。可以设置immediate为true,以便在初始化时立即改变监听的值。例如watch: { value: { handler: function(val, oldVal) { this.videoForm.showVideoPath = val; }, deep: true, immediate: true } }。 3. 子组件中的某个事件(例如上传成功的回调函数)需要通过$emit("input", 值)来将值传递给父组件的v-model。例如this.$emit("input", res.url)。 在父组件中,使用v-model来绑定子组件的值。例如<video-upload v-model="form.videoDz" />。 总结起来,v-model传值的过程包括在子组件中定义props来接收value参数,在watch中监听value的变化,并通过$emit("input", 值)来将值传递给父组件的v-model。在父组件中使用v-model来绑定子组件的值。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Vue——父子组件通过v-model传值和显示](https://blog.csdn.net/weixin_42247720/article/details/127650801)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [vue父子组件v-model传值](https://blog.csdn.net/libinemail/article/details/123826501)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值