国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

基于Vue開發(fā)數(shù)字輸入框組件

2019-11-19 14:41:39
字體:
供稿:網(wǎng)友

隨著 Vue 越來越火熱, 相關(guān)組件庫也非常多啦, 只用輪子怎么夠, 還是要造起來!!!

1、概述

Vue組件開發(fā)的API:props、events和slots

2、組件代碼

github地址:https://github.com/MengFangui/VueInputNumber

效果:

(1)index.html

<!DOCTYPE html><html lang="zh">  <head>    <meta charset="UTF-8" />    <title>數(shù)字輸入框組件</title>  </head>  <body>    <div id="app">      <!--數(shù)字輸入框組件命名為:input-number-->      <!--數(shù)字輸入框組件默認值為5,最大值為10,最小值為0-->      <input-number v-model='value' :max='10' :min='0'></input-number>    </div>    <script src="https://cdn.bootcss.com/vue/2.5.9/vue.min.js"></script>    <script src="js/input-number.js" type="text/javascript" charset="utf-8"></script>    <script src="js/index.js" type="text/javascript" charset="utf-8"></script>  </body></html>

(2)input-number.js

//驗證輸入值是否為數(shù)字function isValueNumber(value) {  return(/(^-?[0-9]+/.{1}/d+$)|(^-?[1-9]*$)|(^-?0{1}$)/).test(value + '');}Vue.component('input-number', {  //模板  template: `  <div class="input-number">      <input type="text" :value="currentValue" @change="handleChange" />    <button @click="handleDown" :disabled="currentValue <= min">-</button>    <button @click="handleUp" :disabled="currentValue >= max">+</button>  </div>  `,  //props實現(xiàn)與父組件的通信(父組件-->子組件)  //對每個props進行校驗,props的值可以是數(shù)組,也可以是對象  props: {    max: {      //必須是數(shù)字類型      type: Number,      //默認值為Infinity      default: Infinity    },    min: {      type: Number,      default: -Infinity    },    value: {      type: Number,      default: 0    }  },  //Vue組件為單向數(shù)據(jù)流,聲明data來引用父組件的value,在組件內(nèi)部維護currentValue  data: function() {    return {      currentValue: this.value    }  },  //監(jiān)聽:與父組件通信 (子組件-->父組件)  watch: {    currentValue: function(val) {      //使用v-model改變value       //this指向當前組件實例      this.$emit('input', val)    }    //    ,    //本示例未使用自定義函數(shù),使用了v-mode input函數(shù)來更新value    //    value: function(val) {    //      //自定義事件on-change,告知父組件數(shù)字輸入框值有所改變    //      this.$emit('on-change', val)    //    }  },  methods: {    //父組件傳遞過來的值可能不符合條件(大于最大值,小于最小值)    updateValue: function(val) {      if(val > this.max) {        val = this.max;      }      if(val < this.min) {        val = this.min;      }      this.currentValue = val;    },    handleDown: function() {      if(this.currentValue <= this.min) {        return;      }      this.currentValue -= 1;    },    handleUp: function() {      if(this.currentValue >= this.max) {        return;      }      this.currentValue += 1;    },    handleChange: function(event) {      var val = event.target.value.trim();      var max = this.max;      var min = this.min;      if(isValueNumber(val)) {        val = Number(val);        this.currentValue = val;        if(val > max) {          this.current = max;        }        if(val < min) {          this.current = min;        }      } else {        //如果輸入的不是數(shù)字,將輸入的內(nèi)容重置為之前的currentValue        event.target.value = this.currentValue;      }    }  },  //初始化  mounted: function() {    this.updateValue(this.value);  }})

(3)index.js

var app = new Vue({  el: '#app',  data: {    //數(shù)字輸入框組件默認值為5(父組件設(shè)置初始化值)    value: 5  }})

總結(jié)

以上所述是小編給大家介紹的基于Vue開發(fā)數(shù)字輸入框組件,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對武林網(wǎng)網(wǎng)站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 仲巴县| 澄迈县| 遵义市| 晋中市| 怀柔区| 久治县| 喀喇| 佛冈县| 维西| 莱阳市| 赣州市| 乌审旗| 舟山市| 孙吴县| 汾西县| 福建省| 沈阳市| 临武县| 蒙城县| 雅安市| 长丰县| 恩施市| 门源| 南乐县| 庐江县| 佳木斯市| 紫云| 临江市| 阳曲县| 芮城县| 衡水市| 涞水县| 南木林县| 阿克苏市| 噶尔县| 凤庆县| 神木县| 黄陵县| 新竹市| 磴口县| 噶尔县|