sync修饰符

210 阅读1分钟

vue规则:组件不能修改props外部数据、this.emit可以触发事件并传参、emit可以触发事件并传参、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