Vue自定义步进器组件

<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8">
	<title>基础组件</title>
	<script src="vue.js" type="text/javascript" charset="utf-8"></script>
</head>
<style type="text/css">
	.box{
		position: relative;
		width: 64px;
		height: 45px;
	}
	input{
		position: absolute;
		left: 0;
		top: 0;
		display: inline-block;
		width: 45px;
		height: 45px;
	}
	button{
		position: absolute;
		right: 0px;
		width: 20px;
		height: 27px;
	}
	.bt1{
		position: absolute;
		top: 0;
	}
	.bt2{
		position: absolute;
		bottom: -6px;
	}
</style>
<body>
	<div id="app">
		<myp :post="1"></myp>  <!-- 传入值1每次加1 -->
		<!-- 修改post的值改变商品添加个数 -->
		<p>拓展:商品添加个数内部修改</p>
	</div>
	<script type="text/javascript">
		var myp = {
			template:`
				<div class='box'>
					<input type="text" v-model="num" @blur='tx()'/>
					<button @click="add()" class='bt1'>+</button>
					<button @click="del()" class='bt2'>-</button>
				</div>
			`,
			props:{
				'post':{
					type:Number,
					default:1
				}
			},
			created(){
				 this.temp2 = this.post*1
				 console.log(this.temp2)
			},
			data:function(){
				return {num:1,temp:1,temp2:1}
			},
			methods:{
				add(){
					if(this.num < 5){
						this.num = this.num + this.temp2
						this.temp = this.num + this.temp2
					}else{
						alert('最多购买5件商品')
					}
				},
				del(){
					if(this.num > 1){
						this.num = this.num - this.temp2
						this.temp = this.num - this.temp2
					}
				},
				tx(){
					if(this.num > 5){
						alert('最多购买5件商品')
						this.num = 5
						this.temp = 5
					}else if(typeof this.num != Number){
						//判断数据类型,如果不是数字就赋值为上次输入的值
						alert('请输入数字')
						this.num = this.temp
					}
				}
			}
		}
		
		new Vue({
			el:"#app",
			data:{
				
			},
			components:{myp}
		})
		
	</script>
	</body>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_44348028/article/details/108329212
今日推荐