.sync数据双向绑定

177 阅读1分钟

.sync数据双向绑定

1. 定义

父子组件使用.sync通信,子组件通过props接收传递的值(绑定的属性名自己决定),在子组件中通过$emit方法触发'update:属性名'事件,实现父子组件值同时变化

2. 案例解析

 // 父组件
 <Child :a.sync="num"></Child>
 <h2>
   父组件的num值: {{num}}
 </h2>
 // 子组件
 <h2>
   子组件接收的a值:{{a}}
 </h2>
 <button @click="change">
   点击改变父组件的num
 </button>
 ​
 <script>
   // 此处省略exports 和 methods 和 props
   change(){
     // $emit事件来触发update来监听a的值,从而改变父组件中num的值,父组件跟着变化,实现双向绑定
     this.$emit('update:a', this.a+1)
   }
 </script>
  • 子组件中触发事件一次,a的值会加一,同时,父组件中num的值也会加一保持一致变化.

3. 原理

  • 利用eventBus,在子组件使用$emit('update.a', this.a+)来通知父组件去响应,而父组件通过$event来接收经过子组件修改后的值
  • update是vue中规定的语法书写格式,a是被绑定的数据,this.a+是带给父组件值的变化