uni-app 数字输入框组件封装


前言

数字输入框是一个项目中常见的需求,其中的耦合度很高,完全可以将其封装起来使用,在使用的时候传入五个参数,分别为:

  1. 最大值
  2. 最小值
  3. 默认值
  4. 弹出层的开启与关闭
  5. 确认后的回传数据

一、创建数字输入框文件


创建一个文件夹components,在文件夹中创建vue文件dialog

二、制作数字输入框组件

<template>
  <view>
    <uni-popup ref="popup" type="dialog">
      <uni-popup-dialog :title="$t('revise_quantity')" type='info' :duration="2000" :before-close="true" @close="close" @confirm="confirm">
        <uni-number-box :min="minNumber" :max="maxNumber" :value="minNumber"  v-model="number"/>
      </uni-popup-dialog>
    </uni-popup>
  </view>
</template>

<script>
export default {
  props:['dislogOpen','minNumber','maxNumber'],
	data() {
		return {
      number:0,
    }
	},
	watch:{
    dislogOpen(newVal,oldVal){
      this.number = this.minNumber
      if(newVal){
        this.open()
      }
    }
  },
	methods: {
		open() {
			this.$refs.popup.open('top')
		},
		close() { //取消关闭遮罩
      this.$emit('numberDialog',this.dislogOpen)
			this.$refs.popup.close()
		},
    confirm() { //确认关闭遮罩
      this.$emit('number',this.number)
      this.$emit('numberDialog',this.dislogOpen)
      this.$refs.popup.close()
    }
	}
}

</script>

<style>
  .uni-popup-dialog{
    width: 100%;
  }
</style>

可以看到在和当中我只传入了三个参数分别为控制弹出层开关、最小值、最大值。这是因为默认值我这里直接使用最小值来作为默认值,而最终点击事件将确认后的数值则是子组件向父组件传输,所以是在父组件进行接收,这个不清楚的话可以参考父子传值。

这里面还用到了watch监听器去监听弹出层开关数据的变化,当弹出层被触发时会将最小值赋予给默认值,并且在判断是打开遮罩时触发open()函数进行打开遮罩

注意一点在关闭遮罩的时候我多加了一个将父组件穿过来的dislogOpen重新赋值为false传回给父组件,这样子做的意义是:在我打开时发现父组件一直传过来的都是true哪怕在已经打开的状态下还是传入的true所以这里就在关闭时将父组件的dislogOpen重新赋值为false。当然这里的方法有很多,不止我这一种办法可以根据个人实际进行调整,我这里就只是分享一下我自己的方法。

三、父组件调用

父组件调用就很简单了,我这里就不详细去说明了

引入封装的组件

import dislog from '../components/dialog.vue'

<dislog 
	:dislogOpen='dislogOpen' 
	:minNumber='minNumber' 
	:maxNumber='maxNumber' 
	@numberDialog='closenumberDialog' 
	@number='spScancodeChange'>
</dislog>
//在data中定义对应的字段,以及创建对应的函数否则会报错,名字看自己需求,但是需要注意和子组件的命名一致
//dislogOpen : 控制弹出层开关显示
//minNumber : 最小值
//@numberDialog : 这个则是我刚才提到的在弹出层关闭时父组件接收到就将dislogOpen赋值为false
//@number : 接收最后确认的数值,在这个函数中也可以处理后续的逻辑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wh1T3ZzT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值