国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

Vue2.0 組件傳值通訊的示例代碼

來源:懂視網 責編:小采 時間:2020-11-27 22:33:39
文檔

Vue2.0 組件傳值通訊的示例代碼

Vue2.0 組件傳值通訊的示例代碼:在Vue項目中,我們經常把某個功能模塊封裝起來,形成組件,下次調用時非常方便,同時也是在一些循環中進行dom操作的一種較好方式。 本次我想以一個評價組件來說一下組件的事件和參數是怎樣傳遞的,如何完成的組件通訊。 示例如下: 這里先說一下組件設計思
推薦度:
導讀Vue2.0 組件傳值通訊的示例代碼:在Vue項目中,我們經常把某個功能模塊封裝起來,形成組件,下次調用時非常方便,同時也是在一些循環中進行dom操作的一種較好方式。 本次我想以一個評價組件來說一下組件的事件和參數是怎樣傳遞的,如何完成的組件通訊。 示例如下: 這里先說一下組件設計思

在Vue項目中,我們經常把某個功能模塊封裝起來,形成組件,下次調用時非常方便,同時也是在一些循環中進行dom操作的一種較好方式。

本次我想以一個評價組件來說一下組件的事件和參數是怎樣傳遞的,如何完成的組件通訊。

示例如下:


這里先說一下組件設計思路:

明確整個功能場景,找出存在的事件操作,此例是一個簡單的評價功能,即點擊某一個星星時左邊以及當前為選中的黃色星,右邊為未選中的白色星。

確定可復用的組件,即具有重復操作的模塊,這里明顯的每一個星星為一個可復用組件, 其實還有個星星變成白色和黃色也是一個小組件,這種在具體寫的時候覺得可以再分即可。

至此一個劃分了三個組件: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>

總結一下:

  1. 父組件通過v-bind:綁定參數傳給子組件,子組件通過props接受這個參數。
  2. 在組件的最底層開始寫事件,由最底層組件逐步向上$emit事件流,并攜帶相應參數,最后在父組件內完成總的數據處理。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Vue2.0 組件傳值通訊的示例代碼

Vue2.0 組件傳值通訊的示例代碼:在Vue項目中,我們經常把某個功能模塊封裝起來,形成組件,下次調用時非常方便,同時也是在一些循環中進行dom操作的一種較好方式。 本次我想以一個評價組件來說一下組件的事件和參數是怎樣傳遞的,如何完成的組件通訊。 示例如下: 這里先說一下組件設計思
推薦度:
標簽: VUE 代碼 通信
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 欧美日韩精品高清一区二区 | 国产免费观看网站 | 日韩 欧美 综合 在线 制服 | 日韩精品第1页 | 精品日韩一区二区 | 精品亚洲一区二区 | 欧美一区二区三区不卡 | 亚洲欧美精品在线 | 激情综合亚洲欧美日韩 | 哪里有毛片 | 人人干人人爽 | 欧美国产成人精品一区二区三区 | 成人一a毛片免费视频 | 久久一区二区三区免费 | 亚洲女同一区二区 | 一区二区三区高清 | 亚洲素人在线 | 欧美日韩片 | 国产精品久久久久激情影院 | 久久精品国产一区二区三区日韩 | 91久久国产综合精品 | 国产一区二区日韩欧美在线 | 欧美色图另类 | 日韩欧美第一页 | 欧美高清视频在线观看 | 天天操综 | 国产精品视频不卡 | 国产高清特黄无遮挡大片 | 日本不卡视频一区二区三区 | 97精品视频在线 | 在线亚洲电影 | 91亚洲 欧美 国产 制服 动漫 | 国产va在线播放 | 精品久久久久久国产牛牛app | 精品二区 | 精品国产亚一区二区三区 | 一级黄免费 | 天天搞夜夜 | 国产l精品国产亚洲区在线观看 | 国产成人综合久久 | 悠悠色综合 |