vue封装组件,input为例


 

input组件:

<template>
  <div>
    <input :value="currentValue" @input="inputload">
    <!--<input :value="currentValue" @input="$emit('input', $event.target.value)">-->
  </div>
</template>
<script>
export default {
  name: 'Input',
  data() {
    return {
      currentValue: this.value,
    };
  },
  props: {
    value: {
      type: [String, Number],
      default: ''
    },
  },
  watch: {
    value(val) {
      this.setCurrentValue(val);
    }
  },
  methods: {
    setCurrentValue(value) {
      console.log(value)
      if (value === this.currentValue) return;     
      this.currentValue = value;
    },
    inputload(event){
      let value = event.target.value;      
      this.$emit('input', value)
    }
  }
}
</script>

页面使用:

<template>
    <div>
        姓名:<yls-input v-model="inputvalue"></yls-input>  
        昵称:<yls-input v-model="inputvalue2"></yls-input>
        学校:<yls-input v-model="inputvalue3"></yls-input>
        <button @click="submit">提交</button>      
    </div>
</template>
<script>
import Input from '@/components/Input.vue'
export default {
    data() {
        return {
            inputvalue: '',
            inputvalue2: '',
            inputvalue3: ''
        }
    },
    components: {
        'yls-input':Input
    },
    methods:{
        submit(){
            console.log(this.inputvalue,this.inputvalue2,this.inputvalue3)
        }
    }
}
</script>

效果图:

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值