随着 Vue 越来越火热, 相关组件库也非常多啦, 只用轮子怎么够, 还是要造起来!!!
1、概述
Vue组件开发的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>数字输入框组件</title>
</head>
<body>
<div id="app">
<!--数字输入框组件命名为:input-number-->
<!--数字输入框组件默认值为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
//验证输入值是否为数字
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实现与父组件的通信(父组件-->子组件)
//对每个props进行校验,props的值可以是数组,也可以是对象
props: {
max: {
//必须是数字类型
type: Number,
//默认值为Infinity
default: Infinity
},
min: {
type: Number,
default: -Infinity
},
value: {
type: Number,
default: 0
}
},
//Vue组件为单向数据流,声明data来引用父组件的value,在组件内部维护currentValue
data: function() {
return {
currentValue: this.value
}
},
//监听:与父组件通信 (子组件-->父组件)
watch: {
currentValue: function(val) {
//使用v-model改变value
//this指向当前组件实例
this.$emit('input', val)
}
// ,
//本示例未使用自定义函数,使用了v-mode input函数来更新value










