首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue js :自定义输入清除值

Vue js :自定义输入清除值
EN

Stack Overflow用户
提问于 2019-12-03 18:21:01
回答 1查看 506关注 0票数 0

我创建了一个自定义输入

代码语言:javascript
复制
<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>

父组件调用自定义输入组件以获取其内容,如:

代码语言:javascript
复制
<vTextbox v-model="email" type="email">Email</vTextbox>
代码语言:javascript
复制
export default {
  ...
  data: function(){
      return{
          email: "",
      }
  },
  methods:{
    Clear: function(){
        this.email = ""
    }
  }
}

当调用clear函数时,我希望清除自定义输入组件的值/内容。我尝试将this.email=设置为“”,但它不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-03 18:50:42

问题是您没有收到自定义输入中的值。虽然父组件中有v-model,但是要使v-model魔术发挥作用,组件需要实现value支柱并监视change

以下是可能的样子

代码语言:javascript
复制
<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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59163163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档