VUE中.sync 修饰符

vue 1.x 的时候曾作为双向绑定功能存在,即子组件可以修改父组件中的值。
vue2.0时因为它违反了单向数据流的设计理念,单向数据流指的是使用一个上传数据流和一个下传数据流进行双向数据通信,两个数据流之间相互独立,所以在 vue2.0 的时候被干掉了。
在 vue2.3.0+ 以上版本又重新引入了这个 .sync 修饰符。但是这次它只是作为一个编译时的语法糖存在。它会被扩展为一个自动更新父组件属性的 v-on 监听器。说白了就是让我们手动进行更新父组件中的值了,从而使数据改动来源更加的明显。
作为语法糖,肯定有简单的写法:

//普通写法
text-document
    v-bind:title="doc.title"
    v-on:update:title="doc.title = $event"
></text-document>
//语法糖写法
<text-document   
	v-bind:title.sync="doc.title"  
></text-document>
  
Vue.component('text-document', { 
  props: ['title'], 
  template: `
    <div> 
      <button @click='setNewTitle'>更新标题</button>
    </div>
  `,
  methods:{
   setNewTitle:function(){
       //手动进行更新父组件中的值
       this.$emit('update:title', '这步操作修改标题实现prop双向绑定')
    } 
  }
})

var vm = new Vue({
  el:'#app',
  data:{
     doc:{
      title:'对prop进行“双向绑定”'
     }
  }, 
});

JS中最主要的就是这句话
this.$emit('update:title', newVal)
其中update:myPropName 其中 myPropName 表示要更新的 prop (我的代码中写的是title)值。当然如果你不用 .sync 语法糖使用上面的 .$emit 也能达到同样的效果

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值