vue中的v-model 与 .sync

.sync与v-model的相同点和区别是

  • 相同点:都是语法糖,都可以实现父子组件中的数据的双向通信。
  • 区别点:
    • 格式不同。 v-model="num", :num.sync="num"
    • v-model: @input + value
    • :num.sync: @update:num
    • v-model只能用一次;.sync可以有多个。

 .sync  相当于绑定了自定义属性a,和一个自定义事件@upadte:a



<template>
  <div>
    <MyCom :a.sync='num'/>
    // <MyCom :a='num' @upadte:a='val=>num=val'/>
  </div>
</template>
<script>
import MyCom from './MyCom.vue'
export default{
    compontents:{MyCom},
    data(){
     return {
        num:100
        }
    },
    methods:{
    f(){
    alert('f')
    }
    }
}
</script>


<template>
<div>
 // 自定义组件
    <button @click='$emit('update:a',a=1)'>+1</button>
</div>
</template>
<script>
export default {
    props: {
    a:{type:Number,required:true}
    }
}
</script>

v-model 相当于绑定了自定义属性value和input事件



<template>
  <div>
    <MyCom v-model='num'/>
    // <MyCom :value='num' @input='val=>num=val'/>
  </div>
</template>
<script>
import MyCom from './MyCom.vue'
export default{
    compontents:{MyCom},
    data(){
     return {
        num:100
        }
    },
    methods:{
    f(){
    alert('f')
    }
    }
}
</script>


<template>
<div>
 // 自定义组件
    <button @click='$emit('input',value=1)'>+1</button>
</div>
</template>
<script>
export default {
    props: {
    value:{type:Number,required:true}
    }
}
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值