vue组件:input数字输入框-程序员宅基地

技术标签: ViewUI  javascript  

组件效果图如下:

在vue-cli脚手架上搭建的,用来输入数字,两个按钮用来加减步长。可以设置初始值、最大最小值。

开始代码:

父组件---App.vue

1 <input-component v-model.number='value'
2 :maxNum='maxNum' 3 :minNum='minNum' 4 :step='step' 5 ></input-component>

<input-component>该标签是要引用的子组件自定义标签,value为默认输入值,maxNum为最大值,minNum为最小值,step为步长,即点击加/减按钮要增加/减少的数。

js:

1 data() {
2     return {
3       maxNum: 100,
4       minNum: 0,
5       value: 3,
6       step: 2
7     }
8 }

子组件---input.vue

1 <input :value="currentVal">
2 <input type="button" value="+" @click="buttonClick(1)">
3 <input type="button" value="-" @click="buttonClick(-1)">
4 <p>默认值:{
    {value}}</p>
5 <p>当前值:{
    {currentVal}}</p>
6 <p>最大值:{
    {maxNum}}</p>
7 <p>步长:{
    {step}}</p>
 1 export default {
 2         data() {
 3             return {
 4                 currentVal: this.value
 5             }
 6         },
 7         props: {
 8             value: {
 9                 type: Number,
10                 default: 10
11             },
12             maxNum: {
13                 type: Number,
14                 default: Infinity
15             },
16             minNum: {
17                 type: Number,
18                 default: -Infinity
19             },
20             step: {
21                 type: Number,
22                 default: 1
23             }
24         }
25     }

vue组件是单向数据流,所以无法从组件内部直接修改prop value的值。可以给组件声明一个data,默认引用value的值,在组件内部维护data,这里声明的data值为currentVal。上面代码第四行。

以上,解决了初始化引用父组件value的值,如果子组件修改了currentVal,那么父组件里value也要一起更新,使用watch监听

在子组件中添加

1 export default {
2     ... //此处省略了代码
3      watch: {
4             currentVal(val){
5                 console.log('子组件currentVal值改变')
6                 this.$emit('input', val)
7             }
8      }
9 }

 子组件里按钮点击加减

 1 methods: {
 2       updateVal(val){
 3             if(val > this.maxNum ) val = this.maxNum
 4             if(val < this.minNum) val = this.minNum
 5             this.currentVal = val
 6      },
 7      buttonClick (flag) {
 8            if(flag > 0){
 9                 this.currentVal < this.maxNum ? this.currentVal += this.step : this.maxNum
10                 this.updateVal(this.currentVal)
11            }else{
12                 this.currentVal > this.minNum ? this.currentVal -= this.step : this.minNum
13                 this.updateVal(this.currentVal)
14            }
15      }
16 }

@click="buttonClick(1)"中,参数分别传入1和-1,代表加和减,所以方法中通过判断参数flag是否大于0来确定是加按钮还是减按钮,里面用了三元运算符。
方法updataVal判断输入值是否小于最小值,是否大于最大值,所以,还需要在第一次初始化时调用,及mounted中

1 mounted(){
2    this.updateVal(this.value)
3 }

看起来OK了,但是,如果你在input框里输入值,在点击加减按钮,它改变的值还是以前的值,所以要在input框上添加change事件

1 <input :value="currentVal" @change="fixNumber">
1 methods: {
2      ...  //省略了其他方法
3      fixNumber ($event) {
4           let fix
5           if (typeof $event.target.value != 'number') {fix = Number($event.target.value.replace(/\D/g, ''))}
6           else {fix = $event.target.value}
7           this.updateVal(fix)
8      }
9 }

这里第5行代码是判断输入值是否是数字类型并做了一个简单的转换。

这里获取input输入值,除了可以用$event.target.value,还可以用this.$refs.input.value。

 

以上。

转载于:https://www.cnblogs.com/ddkei/p/9485927.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34146805/article/details/93861497

智能推荐

网络取证原理与实战-程序员宅基地

文章浏览阅读244次。网络取证原理与实战一、分析背景网络取证技术通过技术手段。提取网络犯罪过程中在多个数据源遗留下来的日志等电子证据。形成证据链,依据证据链对网络犯罪行为进行调查、分析、识别,是解决网络安全问题的有效途径之中的一个。眼下,传统的计算机取证模型和方法比較成熟。而应用于大数据时代则须要OSSIM等集成分析平台对海量数据尽心网络取证分析。二、取证分析特点网络取证不同于传统的计算机取证,..._网络取证与实践(网络取证与实践01)

.net操作InI文件-程序员宅基地

文章浏览阅读293次。public class INI {public static string IniFileName = "";//路径 [DllImport("kernel32")] private static extern int GetPrivateProfileInt(string lpApplicationName, string lpKeyName,..._.net ini

为CentOS添加dag源 EPEL源_dag.repo-程序员宅基地

文章浏览阅读3.9k次。在yum仓库里新建文件dag.repo,内容如下# cat /etc/yum.repos.d/dag.repo[dag]name=Dag RPM Repository for Red Hat Enterprise Linuxbaseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/daggpgcheck=1enable_dag.repo

【笔记】随机生成验证码_validatecodeutils-程序员宅基地

文章浏览阅读384次。package com.cyf.util;import java.util.Random;/** * 随机生成验证码工具类 */public class ValidateCodeUtils { /** * 随机生成验证码 * @param length 长度为4位或者6位 * @return */ public static Integer generateValidateCode(int length){ Intege._validatecodeutils

【例4-3】单分支 if 语句_单分支语句案例-程序员宅基地

文章浏览阅读2.2k次。/*if选择语句(一)单分支 if 语句if 语句的一般格式: if(表达式) //if语句后不可以加";"!!!!!! {语句组;} //语句组为独立语句时,大括号可以省略。执行过程:执行时首先判断"表达式"是否成立, 如果"表达式"的值为真,则执行"语句组";否则直接转到if语句的后续语句。*///从键盘输入一个字母,无论输入大写还是小写,都..._单分支语句案例

JS逆向加密——补浏览器环境方式_唐志远逆向-程序员宅基地

文章浏览阅读3.5k次。补浏览器环境方式1,首先要说的肯定是 Proxy 了,直接上代码:window = new Proxy(global, { get: function (target, key, receiver) { console.log("window.get", key, target[key]); if (key=="location"){ location = new Proxy(target[key], { ._唐志远逆向

随便推点

win10中chrome浏览器书签路径_win10谷歌浏览器书签保存在哪里-程序员宅基地

文章浏览阅读8.8k次。win10中chrome浏览器书签路径C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default\Bookmarks_win10谷歌浏览器书签保存在哪里

高德地图自定义标记点marker缩放偏移问题_marker缩放位移-程序员宅基地

文章浏览阅读2.1k次。原因:造成这种现象的原因其实是对标记点的偏移量offset属性理解不准确导致,查阅官方文档得知,offset默认值是[0,0],就是定位中心点是在图标的左上角,带着此种思维再去看刚才的效果就可以发现,其实是没有偏移的,只是图标定位点在底部,缩放时造成的视觉上错觉,我们可以看到,如果把视觉焦点聚焦在左上角[0,0]的位置,其实定位一直是准确的。为了符合图标底部是实际定位点的效果,可以看到图标大小是35*38,基于左上角原点,x轴偏移半个宽度,y轴偏移整个高度即可,即offset: [-17.5, -38]_marker缩放位移

【BP分类】基于遗传算法优化BP神经网络的数据分类附matlab代码_bp神经网络 多分类matlab-程序员宅基地

文章浏览阅读69次。遗传算法和BP神经网络可以结合起来优化数据分类任务。遗传算法是一种基于自然选择和遗传机制的优化算法,可以通过模拟自然界的进化过程来搜索最优解。BP神经网络是一种常用的人工神经网络,适用于模式识别和分类问题。在将遗传算法与BP神经网络结合时,可以考虑以下步骤:定义适应度函数:根据问题的具体要求,设计一个适应度函数来度量神经网络的性能。例如,可以使用分类准确率或均方误差作为适应度函数。初始化种群:使用遗传算法的基本原理,初始化一个包含多个个体(可能是不同的神经网络权重和偏置)的种群。_bp神经网络 多分类matlab

MySQL数据库管理:全面指南_管理mysql-程序员宅基地

文章浏览阅读965次,点赞19次,收藏23次。在开发中,我们常常有类似的需求,统计某个字段的最大值,最小值,平均值等等,为此,MySQL中提供了聚合函数来实现这些功能,所谓聚合,就是将多行汇总成一行,其实,所有的聚合函数均如此,输入多行,输出一行,聚合函数具有自动滤空的功能,若某一个值为null,那么会自动将其过滤使其不参与运算。DATETIME类型用于表示日期和时间,它的显示形式为’YYYY-MM-DD HH: MM:SS’,其中,YYYY表示年,MM表示月,DD表示日,HH表示小时,MM表示分,SS 表示秒。3、使用两位数字表示,范围为1—99。_管理mysql

白帽子讲Web安全pdf-程序员宅基地

文章浏览阅读695次。下载地址:网盘下载内容简介编辑在互联网时代,数据安全与个人隐私受到了前所未有的挑战,各种新奇的攻击技术层出不穷。如何才能更好地保护我们的数据?本书将带你走进Web安全的世界,让你了解Web安全的方方面面。黑客不再变得神秘,攻击技术原来我也可以会,小网站主自己也能找到正确的安全道路。大公司是怎么做安全的,为什么要选择这样的方案呢?你能在本书中找到答案。详细的剖..._白帽子讲web安全pdf

GBK Character Map_亽仒凢凣-程序员宅基地

文章浏览阅读10w+次。GBK Code Table Your computer has to have Chinese character font installed to view this page correctly. Refer to Character Map page for more details on how to install and display Chinese fonts.GBK Character Map, 0x8140 - 0x8FFFGBK Ch_亽仒凢凣

推荐文章

热门文章

相关标签