参考《Vue,js》实战(梁灏编著)

input-number:实战:开发一个数字输入框组件

git代码
index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><!-- 基本需求数字输入框只能输入数字,而且有两个快捷按钮,可以直接减1和加1,。除此之外,设置初始值、最大值、最小值,在数值改变时,触发一个自定义事件来通知父组件。 --><div id="app"><input-number v-model="value" :max="10" :min="0"></input-number></div><script src="https://unpkg.com/vue/dist/vue.min.js"></script><script src="input-number.js"></script><script src="index.js"></script>
</body>
</html>

index.js

var app = new Vue({el: '#app',data :{value: 5}
});

input-number.js

function isValueNumber(value) {  return (/(^-?[0-9]+\.{1}\d+$)|(^-?[1-9][0-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:{max:{type: Number,default: Infinity},min:{type: Number,default: -Infinity},value:{type: Number,default: 0}},data:function(){return {currentValue: this.value}},watch:{currentValue:function(val){this.$emit('input',val);this.$emit('on-change',val);},value:function(val){this.updateValue(val);}},methods:{handleDown:function(){if (this.currentValue<=this.min) return;this.currentValue--;},handleUp:function(){if(this.currentValue>=this.max) return;this.currentValue++;},handleChange:function(){var val=event.target.value.trim();var max=this.max;var min=this.min;if(isValueNumber(val)){val=Number(val);this.currentValue=val;if(val>max){this.currentValue=max;}else if(val<min){this.currentValue=min;}}else{event.target.value=this.currentValue;}},updateValue:function(val){if(val>this.max) val=this.max;if(val<this.min) val=this.min;this.currentValue=val;}},mounted:function () {this.updateValue(this.value);}
});

Vue.js学习笔记—input-number:实战:开发一个数字输入框组件相关推荐

  1. Vue.js学习笔记—sort-table:实战:使用Render函数开发可排序的表格组件

    参考<Vue,js>实战(梁灏编著) sort-table:实战:使用Render函数开发可排序的表格组件 index.html <!DOCTYPE html> <htm ...

  2. Vue.js学习笔记 2022 04 17

    Vue.js学习笔记 1 Vue.js基础 Vue.js介绍 vuejs 渐进式 JavaScript 框架 Vue.js 如何应用 1 在普通html项目中,引入VUE.JS Hb 的项目 生成的 ...

  3. Vue.js 学习笔记 十二 Vue发起Ajax请求

    首先需要导入vue-resource.js,可以自己下载引入,也可以通过Nuget下载,它依赖于Vue.js. 全局使用方式: Vue.http.get(url,[options]).then(suc ...

  4. Vue.js 学习笔记 十一 自定义指令

    之前看到过v-bind,v-on等指令,Vue还可以自定义指<div id="divApp"        <div v-focus></div> & ...

  5. Vue.js 学习笔记 十 自定义按键事件

    <div id="divApp"><!--任何键盘动作都会触发--><input type="text" v-on:keyup=& ...

  6. Vue.js 学习笔记 六 v-model 双向绑定数据

    之前说的v-bind指令,可以绑定数据,但是是单向的,从model向view绑定,下面介绍v-model,可以双向绑定数据 <div id="divApp"><p ...

  7. Vue.js 学习笔记 五 常用的事件修饰符

    介绍几个常用的事件修饰符 直接上代码 <div id="divApp"><div class="divColor" v-on:click=&q ...

  8. Vue.js 学习笔记 四 用一,二,三的知识做个跑马灯

    做个简单的跑马灯效果 页面定义2个按钮,绑定2个方法. <div id="divApp"><input type="button" value ...

  9. Vue.js 学习笔记三,一些基础指令,v-bind,v-on

    在笔记二的基础上继续写 v-bind指令,为属性绑定数据 <!--v-bind指令可以绑定属性--><div v-html="msg2" v-bind:title ...

最新文章

  1. 机器学习入门:K-近邻算法
  2. java 注解 long转date_Spring data jpa时间注解
  3. java用beaninfo_java 可以使用BeanInfo实现bean实体与map之间的互相转换
  4. react学习(13)-moment中 isRangePicker 控制类型
  5. PHP中一些有用的函数
  6. 编码 GBK 的不可映射字符
  7. SQL函数大全(转)
  8. JDK获取所有的系统参数
  9. 朴素版prim算法求最小生成树
  10. Tomcat优化大全,进来看了,真就会了
  11. 全角空格可复制粘贴,解决字符对齐问题
  12. 微软新搜索引擎Bing探秘(组图)
  13. 浅谈:Java和C语言各自的学习难度
  14. ubuntu 印象笔记
  15. vijos 1282128312841285 佳佳的魔法照片/魔法药水/魔杖/魔法阵
  16. 第05章 Go语言函数(Go语言func)
  17. 线代【二次型】--猴博士爱讲课
  18. IDEA离线安装Oracle数据库驱动包
  19. 2016年2月西部数码.wang域名注册量及份额报告
  20. IP地址是什么,IP的作用是什么?

热门文章

  1. MATLAB函数指令——xlsread()数据读取
  2. 2020年1月编程语言排行榜:C语言获得“2019 年度编程语言”
  3. Zynq UltraScale+ MPSoC IPI 通信
  4. C++ 时间计算器 之 超级无敌小白版 刚入门的快点看过来!
  5. 基于图像风格迁移的人脸卡通化设计与实现
  6. 学计算机考研能考人工智能么,本科学这4个专业,考研后可以选择“人工智能”方向...
  7. 人工智能AI 计算平台介绍
  8. LPC1788--SSP设置驱动W25Q16--以及特别注意点
  9. 数学分析:隐函数定理和反函数定理
  10. j计算机职称考试题库,2017职称计算机考试题库「附答案」