vue 사용자 정의 이벤트 폼 입력 구성 요소 사용법 상세 설명[날짜 구성 요소 와 화폐 구성 요소]
사용자 정의 이 벤트 는 사용자 정의 폼 입력 구성 요 소 를 만 들 고 v-model 을 사용 하여 데이터 양 방향 연결 을 할 수 있 습 니 다.
v-model 의 실현 원리:
<input v-model="something">
이것 은 다음 과 같은 예제 의 문법 사탕 에 불과 하 다.
<input
v-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" class="form-control" 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" class="form-control" 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+)\.(\d\d).*$/,'$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>
인 스 턴 스 그림처음에는 몰 랐 다
사용자 정의 구성 요소 에 연 결 된 input 이벤트 중
this.$emit('input',$api.getLong(value)); || this.$emit('input', value);
의미왜 input 사건 에서 input 사건 을 촉발 시 켜 야 하 는 지 순환 호출 이 되 지 않 습 니까?나중에 깊이 연구 하 겠 습 니 다.
$emit 는 하위 구성 요소 가 부모 구성 요 소 를 촉발 하 는 이벤트 함수 임 을 알 게 되 었 습 니 다.따라서 이 구성 요소 의 부모 구성 요 소 를 호출 하 는 input 이벤트 입 니 다.
<dates name="guaranteeBeginDay"
v-model="guaranteeBeginDay" /> || <currency
name="money" v-model="money" />
부모 구성 요소 의 input 이 벤트 는 v-model 의 실현 원리 입 니 다.
<input
v-bind:value="something"
v-on:input="something = $event.target.value">
따라서 하위 구성 요소 의 input 이 벤트 는 부모 구성 요소 의 input 이 벤트 를 촉발 하여 vue data 데 이 터 를 변경 합 니 다.data 데이터 변화 트리거v-bind:value
페이지 데 이 터 를 업데이트 합 니 다.본 고 에서 말 한 것 이 여러분 vue.js 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fastapi websocket 및 vue 3(Composition API)1부: FastAPI virtualenv 만들기(선택 사항) FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오. 생성main.py 파일 및 실행 - 브라우저에서 이 링크 열기http://127.0.0.1:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.