关于第二种自定义组件写法的疑惑,麻烦老师解答
来源:3-9 vue如何自己实现v-model

THEEND0123
2021-02-25
父组件
<template>
<div>
<Test v-model="val"/>
{{val}}
</div>
</template>
<script>
import Test from './Test.vue'
export default {
data(){
return {
val:'test value'
}
},
components:{
Test
},
}
</script>
子组件
<template>
<input :value="testVal" @input="handleChange"/>
</template>
<script>
export default {
props:['val'],
data(){
return {
testVal:this.val
}
},
watch:{
val(propsVal){
this.testVal = propsVal
}
},
methods:{
handleChange(e){
this.testVal =e.target.value
this.$emit("input",this.testVal)
}
},
}
</script>
老师,您好,不太理解this.$emit("input",this.testVal)
在这里的作用,又重新触发input
事件,再执行handleChange
事件处理函数,那不死循环了?这怎么传回父组件val
啊?
写回答
1回答
-
双越
2021-02-25
感觉你对 Vue 的 this.$emit 还不太了解。this.$emit('xxx') 就是触发父组件的事件。
062021-06-03
相似问题