javascript - Vue js:自定义输入清除值
问题描述
我创建了一个自定义输入
<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="" 但它不起作用。
解决方案
问题是您没有收到自定义输入中的值。当您v-model
在父组件中时,为了使v-model
组件发挥作用,该组件需要实现value
prop 并监视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>
推荐阅读
- php - XDebug 在 VScode 中无法用于 php 调试
- tensorflow - 将元数据添加到 tensorflow lite 文件
- javascript - 在 vue 应用程序中首次加载后动态 PixiJS 画布出错
- mongodb - MongoDB $lookup 和 $map 对象数组
- java - sun.misc.不安全警告
- r - R包安装失败:ld:找不到框架CoreFoundation clang-7:错误:链接器命令失败,退出代码为1
- python - 如何在打印结果中没有元素本身的情况下执行循环
- javascript - 在JS中取出Object的子属性
- python - 如何使动态对象名称分配给一个类?/ 如何创建多个对象名称不同的窗口 Tkinter
- django - vimeo 从 django 上传私人视频