vue .sync的用法

它用来模拟实现父子组件的双向绑定。

问题

父组件中定义一个数据项,并传给子组件,子组件中可以对数据项进行修改,并同步到父组件中来。

sync解决

步骤

在普通的父传子的基础上添加.sync

<son :num.sync="numFormParent"></son>

在子组件中,正常定义props来接收数据,并补充一个特殊的事件出来以达到修改父组件中的数据的目标。

this.$emit('update:num', 新值)

这个特殊的事件名就是update:props名

代码

<div id="app">
   <parent></parent>
 </div>
 <script src="./vue.js"></script>
 <script>

     Vue.component('parent', {
       template: `<div class="box">我是父组件,数据值是{{num}}
         <son :num.sync="num"></son></div>`,
       data() {
         return {num: Date.now()}
       }
     })
     Vue.component('son', {
       template: `<div class="box"> 我是子组件{{num}}
         <button @click="hChange">修改num</button>
       </div>`,
       props:['num'],
       methods: {
         hChange() {
           this.$emit('update:num', Date.now())
         }
       }
     })

     var vm = new Vue({
         el: '#app'
     })
 </script>

同款代码使用v-model来实现

Vue.component('parent', {
  template: `<div class="box">我是父组件,数据值是{{num}}
    <son v-model="num"></son></div>`,
  data() {
    return {num: Date.now()}
  }
})
Vue.component('son', {
  template: `<div class="box"> 我是子组件{{value}}
    <button @click="hChange">修改num</button>
  </div>`,
  props:['value'],
  methods: {
    hChange() {
      this.$emit('input', Date.now())
    }
  }
})

小结

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值