清新UI组件库——input组件开发思路

清新组件库:http://ifresh-ui.yating.online/

源码地址:https://github.com/Chenyating/iFresh-ui

在这里插入图片描述

input组件遇到的问题

v-model问题

外部value变化,input的值没有变化?

在这里插入图片描述
先理解v-model的性质

<input v-model="searchText">
等价于
<input
  v-bind:value="searchText"
  v-on:input="searchText = $event.target.value"
>

组件上使用v-model

<if-input v-model="searchText"></if-input>
等同于
<if-input
  v-bind:value="searchText"
  v-on:input="searchText = $event"
></if-input>

要让if-input能正常使用,必须:

  1. 将其 value 特性绑定到一个名叫value的prop上
   props: {
        value:{
            type:String,
            default:''
        }
    },
  1. 在其 input 事件被触发时,将新的值通过自定义的input事件抛出
自定义组件里的input要这么写:
<input :value="reciveValue" @input="inputMethod" />

注意:reciveValue=this.value,要指向value,不这么写,没法双向绑定。

data(){
  return{
    reciveValue:this.value
  }
}

      inputMethod(e) {
            this.receiveValue=e.target.value;
            this.$emit('input', this.receiveValue);
        }

内部input变化,外部没有变化

在这里插入图片描述

反正每次值发送变化的时候,就$emit一下

input的方法

  • 1、当input 获取到焦点时触发,最先触发
  focusMethod(e) {
      this.$emit('focus', e)
  }
  • 2、主要是用于 input type=button,当被点击时触发此事件
  clickMethod(e) {
    this.$emit('click', e)
  }
  • 3、input输入文字
  keydownMethod(e) {
    this.$emit('keydown', e)
  }
  • 4、当input的value值发生变化时就会触发,不用等到失去焦点
  inputMethod(e) {
    if (this.readonly) {
        this.$emit('input', this.currentValue);
    } else {
        this.currentValue = e.target.value;
        this.$emit('input', this.currentValue);
    }
  }
  • 5、完成输入,在此事件触发之前一定触发了onkeydown事件
  keyupMethod(e) {
    this.$emit('keyup', e)
  }
  • 6、离开input时,且表单的value发生变化触发,没有发生变化就不触发;
  changeMethod(e) {
    this.$emit('change', e)
  }
  • 7、当input失去焦点时触发,注意:这个事件触发的前提是已经获取了焦点再失去焦点的时候会触发相应的
  blurMethod(e) {
    this.$emit('blur', e)
  }
  • 8、表单选中内部内容触发
  selectMethod(e) {
    this.$emit('select', e)
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值