前几天面试的时候被问到了这个问题,不会。
今天工做的时候恰好有需求要用到,研究了一下。面试
首先要明白,所谓的v-model其实是一个语法糖。this
<child v-model="value"></child>
等于code
<child :value="value" @input="someHandler"></child>
所以,咱们须要在子组件中,使用props来接收value,以及用this.$emit来传值出去。
在子组件中的写法是这样子的:get
// 这里props不推荐这种写法,只是demo使用 props: ["value"], // 经过props拿到数据后,不要直接使用,而是要放在computed里面使用才是比较规范的写法 computed: { computedValue: { get(){ return this.value; }, set(value){ this.$emit("input",value); } } }