vue 修饰符sync的功能是:当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定。
不过它有一个前身,先来看看.sync出现之前是如何实现的
父组件中(传递给子组件一个值:propObj)
<template> <div> <Lala :propObj="lalala" v-on:update:propObj="lalala = $event" ></Lala> </div> </template> <script> import Lala from '@/components/lala.vue'; export default { components:{ Lala }, data(){ return { lalala:{name:"哈哈"}, } } } </script>
子组件中(点击事件去更新父组件的值)
<template> <div><el-button @click="dd()">自定义组件内的按钮</el-button> </div> </template> <script> export default { props:['propObj'],//外部传值 methods:{ dd(){ if(this.propObj.name==2){ this.propObj.name="哈哈"; this.$emit('update:propObj', this.propObj) }else{ this.propObj.name=2; this.$emit('update:propObj', this.propObj) } } } } </script>
下面用vue 修饰符sync来实现,会更简洁
父组件中
<template> <div> <Lala v-bind:propObj.sync="lalala"></Lala> </div> </template> <script> import Lala from '@/components/lala.vue'; export default { components:{ Lala }, data(){ return { lalala:{name:"哈哈"}, } } } </script>
子组件中保持不变