Vue 2.0 구성 요소 전송 값 통신 의 예제 코드
이번 에는 구성 요소 의 이벤트 와 인자 가 어떻게 전달 되 고 완 성 된 구성 요소 통신 을 평가 구성 요소 로 말 하고 싶 습 니 다.
예 는 다음 과 같다.
여기 서 먼저 구성 요소 디자인 방향 을 말씀 드 리 겠 습 니 다.
전체 기능 장면 을 명 확 히 하고 존재 하 는 사건 조작 을 찾 습 니 다.이 예 는 간단 한 평가 기능 입 니 다.즉,특정한 별 을 클릭 할 때 왼쪽 과 현재 선택 한 노란색 별,오른쪽 은 선택 되 지 않 은 흰색 별 입 니 다.
재 활용 가능 한 구성 요 소 를 확인 하 십시오.즉,중복 작업 이 있 는 모듈 입 니 다.여기 서 뚜렷 한 모든 별 은 재 활용 가능 한 구성 요소 입 니 다.사실은 별 이 흰색 과 노란색 으로 변 하 는 것 도 작은 구성 요소 입 니 다.구체 적 으로 쓸 때 다시 나 눌 수 있다 고 생각 합 니 다.
이로써 세 가지 구성 요 소 를 나 누 었 습 니 다:JudgeOf,JudgeStar,StarImg
대부분의 구성 요소 통신 에서 부모 구성 요소 가 하위 구성 요소 에 전달 하 는 것 은 데이터 이 고,하위 구성 요소 가 부모 구성 요소 에 전달 하 는 것 이 이벤트 입 니 다.
우 리 는 우선 아버지 에서 아들 까지 가 는 것 은 데이터 흐름 이 고,아들 에서 아버지 까지 가 는 것 은 사건 흐름 이 라 고 부 르 며,이 점 을 이해 하면 기본적으로 구성 요소 통신 의 상황 을 잘 이해 할 수 있다.
JudgeOf 구성 요소:
기본 적 인 외곽 선,순환 starList 는 세 개의 평 점 옵션 을 구성 합 니 다.하위 구성 요소 에 옵션 이름과 현재 옵션 의 색인 을 전달 합 니 다.
<template>
<div>
<div class="judge-modal" @click="cancel"></div>
<div class="judge">
<br>
<div class="text-center font16"> </div>
<judge-star v-for="item,index in starList" :key="index" @judge="judge" :name="item.name" :index="index" ></judge-star>
<br>
<div class="box container text-left">
<span class="icon-i"></span>
</div>
<div class="bgfff container font14">
<textarea placeholder=" , , !" type="textarea" class="textarea" rows="6" v-model="judgeTxt"></textarea>
</div>
<div class="container">
<br>
<div class="btn btn_block text-center" @click="submit"> </div>
</div>
</div>
</div>
</template>
<script>
import JudgeStar from './judgeStar.vue'
export default{
data(){
return{
starList:[
{name:' ',key:'evaluate.serviceStarLevel'},
{name:' ',key:'evaluate.dutyStarLevel'},
{name:' ',key:'evaluate.onTimeStarLevel'},
],
evaluate:[],
judgeTxt:''
}
},
components:{
JudgeStar
},
computed:{
},
methods:{
cancel(){
this.$emit('cancel')
},
submit(){
let data = '';
this.starList.forEach((val,index)=>{
data =`${val.key}:${this.evaluate[index]}`
console.log(data)
});
},
judge(data){
this.evaluate[data[0]]=data[1];
}
}
}
</script>
JudgeStar 구성 요소:여기에 chooseIndex 를 등록 합 니 다.어떤 별 을 클릭 할 때 StarImg 구성 요소 emit 현재 별의 index,JudgeStar 구성 요소 에서 이 인 자 를 받 아 chooseIndex 에 할당 합 니 다.또한 StarImg 에서 watch 라 는 인 자 는 index 보다 크 면 선택 되 지 않 았 음 을 나타 내 고 반대로 선택 합 니 다.
<template>
<div class="flex_cont container">
<div class="flex_item name">{{name}}</div>
<div class="flex_item">
<star-img @choose="choose" v-for="item,index in starArr" :key="index" :chooseIndex="chooseIndex" :index="index"></star-img>
</div>
</div>
</template>
<script>
import StarImg from './starImg.vue'
export default{
props:{
name:String,
index:''
},
data(){
return{
chooseIndex:4,
starArr:Array.from({ length: 5 })
}
},
components:{
StarImg
},
mounted(){
this.$emit('judge',[this.index,this.chooseIndex+1]);
},
methods:{
choose(data){
this.chooseIndex = data;
this.$emit('judge',[this.index,this.chooseIndex+1]);
}
}
}
</script>
StarImg 구성 요소:chooseIndex 값 의 변 화 를 관찰 합 니 다.
<template>
<i style="margin: 0 3px;" :class="icon" @click="choose"></i>
</template>
<script>
export default{
props:{
index:Number, //
chooseIndex:Number //
},
data(){
return{
icon:'icon-star'
}
},
watch:{
// index , ,
chooseIndex:function () {
if(this.chooseIndex>=this.index){
this.icon = 'icon-star'
} else {
this.icon = 'icon-star2'
}
},
},
methods:{
choose(){
/* */
this.$emit('choose',this.index)
}
},
created(){
}
}
</script>
요약:이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.