子组件要修改父组件的数据,经常采用采用自定义事件去修改。即$emit,这样一来,父组件就要写上修改属性的方法。如:
这种方式当然是没有问题。但是在写成共有组件的时候这种方法就显得很笨拙,难以调用跟维护。
解决这个弊端的方式是使用.sync修饰符:
sync本质上只是一个语法糖,当你添加.sync时,他等价于代码:
其中fn1:
fn1(val){
this.money = val
}
.sync 相当于给组件绑定了一个属性(子组件中还是通过props接收),并且约定好了一个自定义事件,@update:属性名,这样一来,子组件只需要通过 $emit(update:属性名,val),即可修改父组件属性,这样一来无论是调用还是维护都十分方便了