电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

vue使用自定義事件的表單輸入組件用法詳解【日期組件與貨幣組件】

瀏覽:9日期:2023-01-16 17:15:09

本文實例講述了vue使用自定義事件的表單輸入組件用法。分享給大家供大家參考,具體如下:

自定義事件可以用來創建自定義的表單輸入組件,使用 v-model 來進行數據雙向綁定。

v-model的實現原理 :

<input v-model='something'>

這不過是以下示例的語法糖:

<inputv-bind:value='something'v-on:input='something = $event.target.value'>

在開發項目中,當遇到日期數據時,往往后臺的日期數據都為long型,而前臺顯示成日期型,在使用v-model時,需要轉換一下,為了簡化轉換過程,對此實現自定義日期輸入組件,該組件接收long型日期數據,顯示為date型,通過v-model實現雙向綁定

自定義日期輸入組件實現代碼:

dates.vue組件

<template> <input ref=’dateinput’ type='date' v-bind:value='svalue(value)' v-on:input='uvalue($event.target.value)' /></template><script type='text/javascript'> export default{ props:[’value’], methods:{ svalue(value){if(value) { return $api.dateFormat(value);}else{ return ’’;} }, uvalue(value){var _val = value.split(’-’);//大于1970時才觸發事件,以防止用戶手動輸入年份時計算不正確if(value && _val[0]>=1970){ this.$emit(’input’,$api.getLong(value));} } } } //dateFormat函數 long轉date型 var dateFormat=function(longTypeDate){ var dateType = ''; if(longTypeDate){ longTypeDate = parseInt(longTypeDate); var date = new Date(longTypeDate); dateType += date.getFullYear(); //年 dateType += '-' + getMonth(date); //月dateType += '-' + getDay(date); //日 }else{ dateType = (new Date()).format('yyyy-MM-dd') ; } return dateType; } //返回 01-12 的月份值 var getMonth=function (date){ var month = ''; month = date.getMonth() + 1; //getMonth()得到的月份是0-11 if(month<10){ month = '0' + month; } return month; } //返回01-30的日期 var getDay=function (date){ var day = ''; day = date.getDate(); if(day<10){ day = '0' + day; } return day; } //getLong函數 date轉long型 var getLong = function(date){ date=Date.parse(date.replace(new RegExp('-','gm'),'/')); return date; }</script>

使用方法

<template> <div> <dates name='guaranteeBeginDay' v-model='guaranteeBeginDay' /> </div></template><script> import dates from ’../dates/dates.vue’ export default{ data(){ return {guaranteeBeginDay:1509697628823 //long型數據 } } }</script>

項目需求,在表單中貨幣組件,用戶輸入數字,為其自動添加逗號分隔符,且只能輸入數字,限制小數點后最多兩位,實現了自定義貨幣組件

自定義貨幣組件實現代碼:

currency.vue組件

<template> <input refs='currencyinput' type='text' v-bind:value='showValue(value)' v-on:input='updateValue($event)' /></template><script type='text/javascript'> export default{ props:[’value’], methods:{ showValue(value){if(!!!value){ return ’0’;}return (value+’’).replace(/d{1,3}(?=(d{3})+(.d*)?$)/g, ’$&,’); }, updateValue(el){var value = el.target.value ;value = value.replace(/[^d.]/g,'') .replace(/.{2,}/g,'.') .replace('.','$#$').replace(/./g,'').replace('$#$','.') .replace(/^(-)*(d+).(dd).*$/,’$1$2.$3’);//只能輸入兩個小數 if(value.indexOf('.') < 0 && value !=''){//以上已經過濾,此處控制的是如果沒有小數點,首位不能為類似于 01、02的金額 if(value.substr(0,1) == ’0’ && value.length == 2){ value = value.substr(1,value.length); } }el.target.value = value.replace(/d{1,3}(?=(d{3})+(.d*)?$)/g, ’$&,’);this.$emit(’input’, value); } } }</script>

使用方法

<template> <div> <currency name='money' v-model='money' /> </div></template><script> import dates from ’../currency/currency.vue’ export default{ data(){ return {money:12934350.34 } } }</script>

實例圖片

vue使用自定義事件的表單輸入組件用法詳解【日期組件與貨幣組件】

一開始不明白

自定義組件中綁定的input事件中

this.$emit(’input’,$api.getLong(value)); || this.$emit(’input’, value);

的含義

為什么input事件中還要觸發input事件,這樣不就造成循環調用了嗎,后來深入研究,

才明白,$emit是用于子組件觸發父組件的事件函數,所以此處的input事件為調用該組件的父組件的input事件

<dates name='guaranteeBeginDay'v-model='guaranteeBeginDay' /> || <currency name='money' v-model='money' />

而父組件的input事件則是v-model的實現原理

<inputv-bind:value='something'v-on:input='something = $event.target.value'>

所以子組件的input事件會觸發父組件的input事件,進而改變vue data數據,data數據變化觸發v-bind:value來更新頁面數據顯示。

希望本文所述對大家vue.js程序設計有所幫助。

標簽: Vue
相關文章:
主站蜘蛛池模板: 青岛代理记账_青岛李沧代理记账公司_青岛崂山代理记账一个月多少钱_青岛德辉财税事务所官网 | 南京泽朗生物科技有限公司-液体饮料代加工_果汁饮料代加工_固体饮料代加工 | 储气罐,真空罐,缓冲罐,隔膜气压罐厂家批发价格,空压机储气罐规格型号-上海申容压力容器集团有限公司 | 「安徽双凯」自动售货机-无人售货机-成人用品-自动饮料食品零食售货机 | 纸张环压仪-纸张平滑度仪-杭州纸邦自动化技术有限公司 | 煤矿支护网片_矿用勾花菱形网_缝管式_管缝式锚杆-邯郸市永年区志涛工矿配件有限公司 | 北京网络营销推广_百度SEO搜索引擎优化公司_网站排名优化_谷歌SEO - 北京卓立海创信息技术有限公司 | 原子吸收设备-国产分光光度计-光谱分光光度计-上海光谱仪器有限公司 | 三轴曲线机-端子插拔力试验机|华杰仪器 | 杭州代理记账多少钱-注册公司代办-公司注销流程及费用-杭州福道财务管理咨询有限公司 | 钢制拖链生产厂家-全封闭钢制拖链-能源钢铝拖链-工程塑料拖链-河北汉洋机械制造有限公司 | 高防护蠕动泵-多通道灌装系统-高防护蠕动泵-www.bjhuiyufluid.com慧宇伟业(北京)流体设备有限公司 | 玖容气动液压设备有限公司-气液增压缸_压力机_增压机_铆接机_增压器 | 压砖机_电动螺旋压力机_粉末成型压力机_郑州华隆机械tel_0371-60121717 | 轴流风机-鼓风机-离心风机-散热风扇-罩极电机,生产厂家-首肯电子 | 洗瓶机厂家-酒瓶玻璃瓶冲瓶机-瓶子烘干机-封口旋盖压盖打塞机_青州惠联灌装机械 | 包装机传感器-搅拌站传感器-山东称重传感器厂家-济南泰钦电气 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛婚外情取证-青岛王军侦探事务所 | 渣油泵,KCB齿轮泵,不锈钢齿轮泵,重油泵,煤焦油泵,泊头市泰邦泵阀制造有限公司 | 自动部分收集器,进口无油隔膜真空泵,SPME固相微萃取头-上海楚定分析仪器有限公司 | 太空舱_民宿太空舱厂家_移动房屋太空舱价格-豪品建筑 | 知网论文检测系统入口_论文查重免费查重_中国知网论文查询_学术不端检测系统 | 老城街小面官网_正宗重庆小面加盟技术培训_特色面馆加盟|牛肉拉面|招商加盟代理费用多少钱 | 建大仁科-温湿度变送器|温湿度传感器|温湿度记录仪_厂家_价格-山东仁科 | POS机办理_个人pos机免费领取-银联pos机申请首页 | 玻璃钢格栅盖板|玻璃钢盖板|玻璃钢格栅板|树篦子-长沙川皖玻璃钢制品有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 斗式提升机_链式斗提机_带式斗提机厂家无锡市鸿诚输送机械有限公司 | 河北码上网络科技|邯郸小程序开发|邯郸微信开发|邯郸网站建设 | 单机除尘器 骨架-脉冲除尘器设备生产厂家-润天环保设备 | 钢衬四氟管道_钢衬四氟直管_聚四氟乙烯衬里管件_聚四氟乙烯衬里管道-沧州汇霖管道科技有限公司 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | 流程管理|流程管理软件|企业流程管理|微宏科技-AlphaFlow_流程管理系统软件服务商 | 网站优化公司_北京网站优化_抖音短视频代运营_抖音关键词seo优化排名-通则达网络 | 大行程影像测量仪-探针型影像测量仪-增强型影像测量仪|首丰百科 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 高低温试验房-深圳高低温湿热箱-小型高低温冲击试验箱-爱佩试验设备 | 集装箱标准养护室-集装箱移动式养护室-广州璟业试验仪器有限公司 | 单锥双螺旋混合机_双螺旋锥形混合机-无锡新洋设备科技有限公司 | 自清洗过滤器_全自动过滤器_全自动反冲洗过滤器_量子过滤器-滑漮滴 | 山东风淋室_201/304不锈钢风淋室净化设备厂家-盛之源风淋室厂家 翻斗式矿车|固定式矿车|曲轨侧卸式矿车|梭式矿车|矿车配件-山东卓力矿车生产厂家 | GAST/BRIWATEC/CINCINNATI/KARL-KLEIN/ZIEHL-ABEGG风机|亚喜科技 |