.sync是一个语法糖。
<comp :foo.sync="bar"></comp>
等价于
<comp :foo="bar" @update:foo="val => bar = val"></comp>
当子组件需要更新 foo 的值时,它需要显式地触发一个更新事件
this.$emit('update:foo', newValue)
vue 修饰符sync的功能是:当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定。
案例:
<div id="app"><div>{{bar}}</div><my-comp :foo.sync="bar"></my-comp><!-- <my-comp :foo="bar" @update:foo="val => bar = val"></my-comp> --></div><script>Vue.component('my-comp', {template: '<div @click="increment">点我+1</div>',data: function() {return {copyFoo: this.foo}},props: ['foo'],methods: {increment: function() {this.$emit('update:foo', ++this.copyFoo);}}});new Vue({el: '#app',data: {bar: 0}});
