vue规则:组件不能修改props外部数据、this.event可以获取$emit的参数
sync修饰符是一个语法糖,类似v-model,它主要是解决了父子组件的双向绑定问题。
父组件把数据给子组件,但是子组件要改需要通知父组件。
this.$emit('update:title', newTitle)
然后父组件可以监听那个事件并根据需要更新一个本地的数据 property。例如:
<text-document
v-bind:title="doc.title"
v-on:update:title="doc.title = $event"
></text-document>
为这种模式提供一个缩写,即 .sync 修饰符:
<text-documentv-bind:title.sync="doc.title"></text-document>
:money.sync='total'
// 等价于
:money='total' v-on:update:money='total=$event'
sync和v-model的区别
v-model必须是input标签,它做了两步动作:
1、父组件传给子组件value
2、子组件通过触发input事件来修改value
因此,子组件必须有input标签才行。
而sync不限制标签,因此子组件在修改数据时,就必须约定使用@update:xxx