.sync 修饰符以前存在于 Vue1.0 版本里,后来在2.0版本中移除了 .sync 修饰符。
但是在 2.0 发布之后的实际应用中,发现 .sync 还是有其适用之处,比如在开发可复用的组件库时。我们需要做的只是让子组件改变父组件状态的代码更容易被区分。
从 2.3.0 起重新引入了 .sync 修饰符,但是这次它只是作为一个编译时的语法糖存在。它会被扩展为一个自动更新父组件属性的 v-on 监听器。
需要父组件给子组件传值
子组件通过 emit 改变该值
v-bind 传值 money 给子组件
并绑定事件 update:money 改变 money 值
<template>
<div class="app">
<Child
v-bind:money="total"
v-on:update:money="money = $event"
/>
</div>
</template>
<template>
<div class="child">
{{ money }}
<button @click="$emit('update:money', money - 100)">
</button>
</div>
</template>
<script>
export default {
props: ["money"],
};
</script>
示例:https://codesandbox.io/s/white-glade-xhj86?file=/src/App.vue
<template>
<div class="app">
<Child v-bind:money.sync="total" />
div>
template>
<text-document v-bind.sync="doc">text-document>
这样会把 doc 对象中的每一个 property (如 title) 都作为一个独立的 prop 传进去,然后各自添加用于更新的 v-on 监听器。