我创建了一个自定义输入
<template>
<div class="content">
<p>
<slot></slot>
</p>
<input v-model="content" class="textbox" :type="type" @input="handleInput">
</div>
</template>
<script>
export default {
name: 'vTextbox',
props:{
type: String,
},
data: function(){
return {
content: ""
}
},
methods:{
handleInput(){
this.$emit('input', this.content)
}
}
}
</script>
父组件调用自定义输入组件以获取其内容,例如:
<vTextbox v-model="email" type="email">Email</vTextbox>
export default {
...
data: function(){
return{
email: "",
}
},
methods:{
Clear: function(){
this.email = ""
}
}
}
我想在调用Clear函数时清除自定义输入组件的值/内容。我尝试设置this.email =“”,但不起作用。
答案 0 :(得分:1)
问题是您没有在自定义输入中收到该值。当父组件中有v-model
时,为了使v-model
发挥作用,该组件需要实现value
道具并注意change
。
这是可能的样子
<template>
<div class="content">
<p>
<slot></slot>
</p>
<input v-model="content" class="textbox" :type="type" @input="handleInput">
</div>
</template>
<script>
export default {
name: 'vTextbox',
props:{
value: String, // added value prop
type: String,
},
data: function(){
return {
content: ""
}
},
watch:{
value(val) {
this.content = val; // added watch to override internal value, this will allow clear to work
}
},
methods:{
handleInput(){
this.$emit('input', this.content)
}
}
}
</script>