首页 > 其他分享 >uni-app 数字输入框组件封装

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

时间:2023-09-04 22:31:39浏览次数:46  
标签:遮罩 app dislogOpen number 输入框 最小值 组件 uni 默认值

(文章目录)


前言

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

  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 : 接收最后确认的数值,在这个函数中也可以处理后续的逻辑

标签:遮罩,app,dislogOpen,number,输入框,最小值,组件,uni,默认值
From: https://blog.51cto.com/u_15928719/7364686

相关文章

  • 安装weditor时提示“ UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in po
    问题:安装weditor时提示“UnicodeDecodeError:'gbk'codeccan'tdecodebyte0xadinposition645:illegalmultibytesequence” 解决:方法一:解决方法一设置用户或者系统变量: 方法二:设置临时变量后再pipinstallsetPYTHONUTF8=1pipinstallweditor 原......
  • avue表单组件后台拖拉拽框架avue-form-design在移动端vant框架与uniapp框架下的动态渲
    avue表单组件后台拖拉拽框架avue-form-design:https://github.com/sscfaith/avue-form-designavue表单组件后台拖拉拽框架avue-form-design在移动端vant框架与uniapp框架下的动态渲染转换适配待补充......
  • The 2nd Universal Cup. Stage 1: Qingdao
    GDescription给定一个数列,每次ban一个位置,在每次ban之前,求连续子序列逆序对数的最大值,强制在线。(6s)\(n\leq10^5,\sumn\leq10^6\)Solution先考虑用权值线段树来维护区间逆序对数,不难支持在原数列前后加或删除一个数。然后考虑原题的分裂过程,将一段\([l,r]\)分裂成\([l,p-......
  • 基于uniapp的药品商城外卖小程序
    博主主页:猫头鹰源码博主简介:Java领域优质创作者、博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询项目介绍: 本系统2022年12月26日创作完成,该系统包含小程序端和管理端,系......
  • 基于uniapp的学生(选课)成绩小程序
    博主主页:猫头鹰源码博主简介:Java领域优质创作者、博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询文末联系获取项目介绍: 本系统2022年4月创作完成,该系统包含小程序端和......
  • 基于uniapp的计算机考研助手小程序(含管理端)
    博主主页:猫头鹰源码博主简介:Java领域优质创作者、博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询2022年10月新增功能:用户可以发布帖子,可以查看帖子,能够收藏、评论帖子,可......
  • uniapp检查更新并显示下载进度(2)
    1、App.vue文件<script>importappUpdatefrom'@/util/appUpdate.js'onLaunch:function(){ uni.getSystemInfo({ success:function(e){ //#ifdefAPP-PLUS //检测升级 appUpdate() //#endif}......
  • InstallShield X制作安装程序杂记(4.Application Data节点)
    1.FilesandFolders(文件与文件夹):这个一看就明白,有四个区域Sourcecomputer'sfolders(源机器文件夹,即制作安装程序的机器中的文件夹),SourceComputer'sfiles(源文件,列出源文件夹中的文件)Destinationcomputer'sfolders(目标机器文件夹,即要安装的机器上的文件夹),Destinationcompu......
  • 漫云智播直播无人直播app软件
      漫云智播软件,是一款以商家无人直播为主的软件系统,不管是是否会带货,是否有直播经验,只要把相关用户关系的问题,产品的问题前部录入系统就能实现,自动无人带货了,漫云智播能实现用户直播的所有问题。  漫云智播软件,采用的是高质量的文字识别技术,按照文字的内容识别出相关的客......
  • Eureka application配置文件
    记录下配置文件,方便以后直接copy。server端server:port:13000spring:application:name:test-eureka-servereureka:server:enable-self-preservation:truerenewal-percent-threshold:0.85eviction-interval-timer-in-ms:60000client:......