前几天面试的时候被问到了这个问题,不会。
今天工作的时候刚好有需求要用到,研究了一下。
首先要明白,所谓的v-model实际上是一个语法糖。
<child v-model="value"></child>
等于
<child :value="value" @input="someHandler"></child>
因此,我们需要在子组件中,使用props来接收value,以及用this.$emit来传值出去。
在子组件中的写法是这样子的:
// 这里props不推荐这种写法,只是demo使用
props: ["value"],
// 通过props拿到数据后,不要直接使用,而是要放在computed里面使用才是比较规范的写法
computed: {
computedValue: {
get(){
return this.value;
},
set(value){
this.$emit("input",value);
}
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。