欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2017年08月01日 14:52:08   作者:Yunfly  
本篇文章主要介紹了Vue2.0 組件傳值通訊的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

在Vue項(xiàng)目中,我們經(jīng)常把某個(gè)功能模塊封裝起來,形成組件,下次調(diào)用時(shí)非常方便,同時(shí)也是在一些循環(huán)中進(jìn)行dom操作的一種較好方式。

本次我想以一個(gè)評(píng)價(jià)組件來說一下組件的事件和參數(shù)是怎樣傳遞的,如何完成的組件通訊。

示例如下:


這里先說一下組件設(shè)計(jì)思路:

明確整個(gè)功能場(chǎng)景,找出存在的事件操作,此例是一個(gè)簡(jiǎn)單的評(píng)價(jià)功能,即點(diǎn)擊某一個(gè)星星時(shí)左邊以及當(dāng)前為選中的黃色星,右邊為未選中的白色星。

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

至此一個(gè)劃分了三個(gè)組件:JudgeOf、JudgeStar、StarImg

這里需要明確的是,在大多數(shù)的組件通訊中,父組件往子組件傳遞的都是數(shù)據(jù),子組件往父組件傳遞的才是事件,
我們姑且稱父到子走的是一個(gè)數(shù)據(jù)流,子到父走的是一個(gè)事件流,了解這一點(diǎn)基本可以很好的了解組件通訊的情況。

JudgeOf組件:

基本的外框,循環(huán)starList構(gòu)成三個(gè)評(píng)分選項(xiàng)。向子組件傳遞選項(xiàng)名字,和當(dāng)前選項(xiàng)的索引

<template>
 <div>
 <div class="judge-modal" @click="cancel"></div>
 <div class="judge">
  <br>
  <div class="text-center font16">評(píng)價(jià)</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> 評(píng)價(jià)內(nèi)容
  </div>
  <div class="bgfff container font14">
  <textarea placeholder="請(qǐng)輸入您的評(píng)價(jià),方便我們改進(jìn),謝謝!" 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:'服務(wù)態(tài)度',key:'evaluate.serviceStarLevel'},
   {name:'責(zé)任感',key:'evaluate.dutyStarLevel'},
   {name:'準(zhǔn)時(shí)度',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組件:

在這里注冊(cè)一個(gè)chooseIndex,當(dāng)點(diǎn)擊某一個(gè)星星時(shí),StarImg組件emit當(dāng)前星星的index,JudgeStar組件中接收此參數(shù)并賦值給chooseIndex,同時(shí)StarImg里面watch這個(gè)參數(shù),大于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, //當(dāng)前星星的索引
  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>

總結(jié)一下:

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Element-ui?Layout布局(Row和Col組件)的實(shí)現(xiàn)

    Element-ui?Layout布局(Row和Col組件)的實(shí)現(xiàn)

    我們?cè)趯?shí)際開發(fā)中遇到一些布局的時(shí)候會(huì)用到Layout布局,本文就詳細(xì)的介紹了Element-ui?Layout布局(Row和Col組件)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-12-12
  • Vue實(shí)現(xiàn)簡(jiǎn)單基礎(chǔ)的圖片裁剪功能

    Vue實(shí)現(xiàn)簡(jiǎn)單基礎(chǔ)的圖片裁剪功能

    這篇文章主要為大家詳細(xì)介紹了如何利用Vue2實(shí)現(xiàn)簡(jiǎn)單基礎(chǔ)的圖片裁剪功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2022-09-09
  • Vue動(dòng)態(tài)加載異步組件的方法

    Vue動(dòng)態(tài)加載異步組件的方法

    這篇文章主要介紹了Vue動(dòng)態(tài)加載異步組件的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • vue使用sass根據(jù)環(huán)境進(jìn)行樣式判斷區(qū)分方式

    vue使用sass根據(jù)環(huán)境進(jìn)行樣式判斷區(qū)分方式

    這篇文章主要介紹了vue使用sass根據(jù)環(huán)境進(jìn)行樣式判斷區(qū)分方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 在Vue3中實(shí)現(xiàn)懶加載功能的代碼示例

    在Vue3中實(shí)現(xiàn)懶加載功能的代碼示例

    在現(xiàn)代前端開發(fā)中,懶加載是一種提高應(yīng)用性能和用戶體驗(yàn)的重要技術(shù),尤其是在處理較大圖片或長(zhǎng)列表數(shù)據(jù)時(shí),本文將使用 Vue 3 和其新推出的 setup 語(yǔ)法糖來實(shí)現(xiàn)懶加載功能,并提供具體的示例代碼,需要的朋友可以參考下
    2024-09-09
  • elementUI Tree 樹形控件單選實(shí)現(xiàn)示例

    elementUI Tree 樹形控件單選實(shí)現(xiàn)示例

    在ElementUI中樹形控件本身不支持單選功能,本文就來介紹一下如何實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • vue2.x數(shù)組劫持原理的實(shí)現(xiàn)

    vue2.x數(shù)組劫持原理的實(shí)現(xiàn)

    這篇文章主要介紹了vue2.x數(shù)組劫持原理的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • vue+echarts實(shí)現(xiàn)可拖動(dòng)節(jié)點(diǎn)的折線圖(支持拖動(dòng)方向和上下限的設(shè)置)

    vue+echarts實(shí)現(xiàn)可拖動(dòng)節(jié)點(diǎn)的折線圖(支持拖動(dòng)方向和上下限的設(shè)置)

    制作一個(gè)折線圖用于顯示當(dāng)前24小時(shí)的數(shù)據(jù),并且可以通過拖動(dòng)折現(xiàn)圖設(shè)置數(shù)據(jù),接下來通過本文給大家分享vue+echarts實(shí)現(xiàn)可拖動(dòng)節(jié)點(diǎn)的折線圖(支持拖動(dòng)方向和上下限的設(shè)置),感興趣的朋友跟隨一起學(xué)習(xí)吧
    2019-04-04
  • Vue.js仿微信聊天窗口展示組件功能

    Vue.js仿微信聊天窗口展示組件功能

    這篇文章主要介紹了Vue.js仿微信聊天窗口展示組件功能,需要的朋友可以參考下
    2017-08-08
  • 實(shí)例詳解vue中的代理proxy

    實(shí)例詳解vue中的代理proxy

    這篇文章主要介紹了vue中的代理proxy,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02

最新評(píng)論