vue组件之间通信 (ref v-model 与.sync修饰符) 之三

Posted smouns_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue组件之间通信 (ref v-model 与.sync修饰符) 之三相关的知识,希望对你有一定的参考价值。

组件之间的传值一般涉及到父子之间(属性绑定prop接收父传值/事件绑定$emit子触发父事件),兄弟之间(事件总线)以及无直接关系的组件之间(vuex)

利用refs实现父子之间的传值通信方式,权重较高

v-model与.sync的双向数据绑定

一 . refs

1.1获取组件的实例对象

                                 ---父获取子组件实例对象

子组件标签上里  ref="xxx"

子组件的this(实例对象)====this.$refs.xxx

 <!--  父组件的template中

用ref 实现父子传值
this.$refs 传值给子组件 得到子组件的实例对象,直接调用子组件的属性和方法 
直接在父组件修改子组件的值  
Add为组件标签
 
-->
      <Add ref="add"/>
 // 父组件的js代码 methods中定义 某时机下修改

addClick() 
      // refs 传值给子组件 得到子组件的实例对象,直接调用子组件的属性和方法
      this.$refs.add.isShow = true
      this.$refs.add.mode = 'add'
    ,
//子组件中

data() 
    return 
    ...其他数据

      mode: 'add',
      isShow: false,
      
    
  ,

1.2.子获取父组件实例对象

                ---this.$parent===父组件的实例对象,它找到的父组件是最近的父组件

子组件标签如果是其它组件包着的就是其它组件是它的父级

如果子组件标签是原生标签包着的,它的父组件就是它所在的组件 

 submit() 
    
          // 刷新父级列表 触发父级的方法
          // 原始方式 方法绑定  :this.$emit('getData')
          
          //触发父组件中的getData()方法
         this.$parent.getData() //注意最近一级的父级 (不可在组件内)
       
      )

二 .  v-model 双向数据绑定

父子组件双向绑定(子组件无大变化,父组件中的子组件标签用v-model)

   2.1子组件标签上书写   

  • value="父组件属性"  @input="父组件属性=$event"      
  • v-model="父组件属性"   

      子组件内:
     props:['value'],  //接收父传递的值
     model:
         prop:'传入的属性名,默认是value,当传递的属性不是value时,需要以此改值',
         event:'绑定的事件名,默认是input,当传递的事件名不是input时,需要以此改值'
     ,
      props单向数据流:栈不可修改,堆可以修改
      基本数据类型不可修改,复杂数据类型,只要不改变它的引用地址(栈),它的值随便修改

      this.$emit('input',实参值)   //触发父组件的方法改值


三 .    .sync修饰符 实现双向数据绑定
      

   子组件标签  

  •  :属性名="父组件属性"   @update:属性名="父组件属性=$event"
  •  :属性名.sync="父组件属性"

   子组件内
     props:['属性名']
     触发:this.$emit('update:属性名',实参值)

以上是关于vue组件之间通信 (ref v-model 与.sync修饰符) 之三的主要内容,如果未能解决你的问题,请参考以下文章

vue3 的组件通信以及ref的使用&v-model

vue组件操作 ---ref --v-model 2018-11-05

ref实现父子组件之间通信

Vue3 和Vue2的组件通信方式,建议收藏

vue2.0嵌套组件之间的通信($refs,props,$emit)

Vue组件通信props$ref$emit,组件传值