国产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
主站蜘蛛池模板: 亚洲一区二区三区精品视频 | 最新欧美日韩 | 韩国演艺圈一区二区三区 | 日韩中文在线视频 | 91精品国产色综合久久 | 国产欧美日韩视频在线观看 | 中文字幕亚洲综合 | 综合 欧美 亚洲日本 | 亚洲精品国产成人99久久 | 国产欧美日韩精品第二区 | 国产一区二区三区在线 | 欧美三页 | 国产呦系列 欧美呦 日韩呦 | 成人免费视频77777 | 看全色黄大色黄女片爽毛片 | 亚洲欧美另类日本 | 99久久亚洲精品影院 | 亚洲 欧美综合小说区图片区 | 午夜操一操 | 国产精品免费视频播放 | 激情另类国内一区二区视频 | 国产成人乱码一区二区三区 | 精品一区二区三区四区五区 | 国产欧美一区二区三区视频 | 久久一区精品 | 国产一区二区精品久久 | zozozo欧美人禽交另类视频 | 欧美日韩国产另类一区二区三区 | 精品在线网站 | 最近中文字幕无日本电影 | 久久国产视频一区 | 精品久久一区二区三区 | 国产精品1000部在线观看 | 韩国精品一区二区久久 | 国产精品一页 | 欧美日韩在线精品一区二区三区 | 欧美另类在线观看 | 亚洲欧美日韩国产 | 欧美精品亚洲精品 | 国产欧美91 | 亚洲精品国产自在久久出水 |