亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue中關(guān)于$emit和$on的使用及說(shuō)明

 更新時(shí)間:2022年10月18日 09:19:25   作者:小鐵匠95  
這篇文章主要介紹了vue中關(guān)于$emit和$on的使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

$emit和$on的使用及說(shuō)明

1. vm.$on(event,callback)

用法:監(jiān)聽當(dāng)前實(shí)例上的自定義事件。事件可以由vm.$emit觸發(fā)。回調(diào)函數(shù)會(huì)接收所有傳入事件觸發(fā)函數(shù)的額外函數(shù)。

個(gè)人理解:監(jiān)聽接收傳來(lái)的值

vm.$on('test',function(msg){
  console.log(msg)
})

示例:

2. vm.$emit(eventName,[…args])

用法:觸發(fā)當(dāng)前實(shí)例上的事件。附加參數(shù)都會(huì)傳給監(jiān)聽器回調(diào)。

個(gè)人理解: 注冊(cè)一個(gè)自定義事件

// 只配合一個(gè)事件名使用emit
// 子組件
Vue.component('welcome-button',{
  template: `
    <button @click="$emit('welcome')">點(diǎn)擊按鈕</button>
  `
})
// 父組件
<div>
  <welcome-button v-on:welcome="sayHi"></welcome-button>
</div>  
...
...
...
methods: {
  sayHi() {
    alert('Hi!')  
  }
}

3.示例

有時(shí)候項(xiàng)目里面會(huì)遇到子組件與子組件通信。比如以下情況:

頁(yè)面里引入了header組件和content組件,點(diǎn)擊content組件的按鈕,想要改變header組件的內(nèi)容。

<template>
  <div class="home">
    <v-header></v-header>
    <v-content></v-content>
  </div>
</template>
<script>

image.png

(1)首先,在main.js里面全局注冊(cè)一個(gè)eventbus的方法

import Vue from 'vue';
import App from './App.vue';
import router from './router';
Vue.config.productionTip = false;
Vue.prototype.$EventBus = new Vue();
new Vue({
  router,
  render: h => h(App),
}).$mount('#app')

(2)然后在content組件注冊(cè)一個(gè)自定義事件:

<template>
  <div class="content">
    <img alt="Vue logo" src="../assets/logo.png">
    <button @click="changeEvent">I am content!</button>
  </div>
</template>
<script>
export default {
  name: 'Content',
  methods: {
    changeEvent() {
      // 注冊(cè)一個(gè)自定義事件
      this.$EventBus.$emit("changeNum",123)
    }
  }
}
</script>
<style scoped>
button{
  width: 200px;
  height: 50px;
  display: block;
  margin: 0 auto;
  border: none;
  color: #fff;
  font-size: 20px;
  border-radius: 6px;
  background: #007ef3;
}
</style>

(3)在header組件監(jiān)聽接收這個(gè)值:

<template>
  <div class="header">
    <h1>{{headStr}}</h1>
  </div>
</template>
<script>
export default {
  name: 'Header',
  data(){
    return{
      headStr:"This is my head!"
    }
  },
  created() {
    // 監(jiān)聽接收這個(gè)值
    this.$EventBus.$on("changeNum", (val) => {
      this.headStr = val;
    });
   
  }
}
</script>
<style scoped>
</style>

點(diǎn)擊按鈕,header變化如下:

image.png

這樣就可以完成子組件與子組件之間的傳值了,當(dāng)然也可以用Vuex進(jìn)行子組件之間傳值。

$emit和$on(在同一個(gè)組件中的用法 )

百度之后,終于明白$emit 和 $on 的基礎(chǔ)用法。不多說(shuō) ,直接上課。

  • $on('事件名字'); /監(jiān)聽事件,事件名字是 str型
  • $emit('事件名字',回調(diào)函數(shù));//事件名字是 str型,當(dāng)然,可以有多個(gè)事件名字,如果存在多個(gè)事件名字,那么就是用數(shù)組。

假設(shè)有一個(gè)按紐,希望在點(diǎn)擊按紐之后觸發(fā)某一個(gè)方法。那么我們可以這樣。

<button @click='emit'>只觸發(fā)一個(gè)方法</button>
created () {
      this.$on('wash_Goods',(arg)=> {
          console.log(arg)//這兒的arg能接收到 下面的參數(shù)
      })
  },
  methods : {
      emit () {
         this.$emit('wash_Goods',['fish',true,{name:'vue',verison:'2.4'}])
      }
  }

我們可以這樣子去理解,首先,點(diǎn)擊按紐,它就會(huì)走emit的方法。 在該方法中。遇到emit,那么它就會(huì)找它需要監(jiān)聽到washGoods的事件,找啊找。

然后,它在created的生命周期中找到了。原來(lái),在created生命周期中有一個(gè)叫this.on(‘wash_Goods’)的監(jiān)聽事件。同時(shí),該事件會(huì)有一個(gè)對(duì)應(yīng)的執(zhí)行方法。那么,它就會(huì)順著走下去,直接執(zhí)行 剛在 this.$on(‘wash_Goods’)的監(jiān)聽方法。

this.$on('wash_Goods',(arg)=> {
    console.log(1)
    console.log(arg)//這兒的arg能接收到 下面的參數(shù)
})
this.$on('wash_Goods',(arg)=> {
    console.log(2)
    console.log(arg)//這兒的arg能接收到 下面的參數(shù)
})
this.$on('wash_Goods',(arg)=> {
    console.log(3)
    console.log(arg)//這兒的arg能接收到 下面的參數(shù)
})
//那么,這個(gè)按紐在點(diǎn)擊之后就會(huì)觸發(fā)這三個(gè)方法。 

或許,有同學(xué)會(huì)問(wèn)了,剛我提到,在監(jiān)聽事件晨在,監(jiān)聽的事件可以是數(shù)組。沒(méi)錯(cuò),是數(shù)組,即

<button @click='emit'>只觸發(fā)一個(gè)方法</button>
created () {
? ? this.$on('wash_Goods',(arg)=> {
? ? ? ? console.log('執(zhí)行1')
? ? ? ? console.log(arg)
? ? })
? ? this.$on(['wash_Goods','abcdef'],(arg)=> {
? ? ? ? console.log('執(zhí)行2') //這個(gè)也會(huì)被執(zhí)行
? ? ? ? console.log(arg)
? ? })
},
methods : {
? ? emit () {
? ? ? ? this.$emit('wash_Goods',['fish',true,{name:'vue',verison:'2.4'}])
? ? }
}

這兒的數(shù)組也可以這樣子理解,當(dāng)觸發(fā)按紐的時(shí)候,它去尋找需要監(jiān)聽事件時(shí),不管找到的是字符串還是數(shù)組,只要監(jiān)聽的事件名字中有相對(duì)應(yīng)的名字,它都會(huì)執(zhí)行?!敬騻€(gè)生活中的小例子,哪兒都有你。】 

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文帶你了解Vue數(shù)組的變異方法

    一文帶你了解Vue數(shù)組的變異方法

    Vue框架提供了一些便捷的數(shù)組變異方法,包括push、pop、shift、unshift、splice、sort和reverse等,Vue的數(shù)組變異方法可以自動(dòng)觸發(fā)DOM更新,本文就詳細(xì)帶大家了解一下Vue.js數(shù)組的變異方法
    2023-06-06
  • vue.js中proxyTable 轉(zhuǎn)發(fā)請(qǐng)求的實(shí)現(xiàn)方法

    vue.js中proxyTable 轉(zhuǎn)發(fā)請(qǐng)求的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇vue.js中proxyTable 轉(zhuǎn)發(fā)請(qǐng)求的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • Vue獲取input值的四種常用方法

    Vue獲取input值的四種常用方法

    Vue是一種流行的Web開發(fā)框架,它提供了一個(gè)雙向綁定的語(yǔ)法糖。在Vue中,我們可以很容易地獲取頁(yè)面上的數(shù)據(jù),并且可以實(shí)時(shí)的響應(yīng)其變化,這篇文章主要給大家介紹了關(guān)于Vue獲取input值的四種常用方法,需要的朋友可以參考下
    2023-09-09
  • 基于Vue3實(shí)現(xiàn)的圖片散落效果實(shí)例

    基于Vue3實(shí)現(xiàn)的圖片散落效果實(shí)例

    最近工作中遇到一個(gè)效果還不錯(cuò),所以想著實(shí)現(xiàn)一下,下面這篇文章主要給大家介紹了關(guān)于如何基于Vue3實(shí)現(xiàn)的圖片散落效果的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Vue修改Dom不生效的解決

    Vue修改Dom不生效的解決

    這篇文章主要介紹了Vue修改Dom不生效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 解決IOS端微信H5頁(yè)面軟鍵盤彈起后頁(yè)面下方留白的問(wèn)題

    解決IOS端微信H5頁(yè)面軟鍵盤彈起后頁(yè)面下方留白的問(wèn)題

    微信H5項(xiàng)目,ios端出現(xiàn)了軟鍵盤輸完隱藏后頁(yè)面不會(huì)回彈,下方會(huì)有一大塊留白。這篇文章主要介紹了決微信H5頁(yè)面軟鍵盤彈起后頁(yè)面下方留白的問(wèn)題(iOS端) ,需要的朋友可以參考下
    2019-06-06
  • vue可滑動(dòng)的tab組件使用詳解

    vue可滑動(dòng)的tab組件使用詳解

    這篇文章主要為大家詳細(xì)介紹了vue可滑動(dòng)的tab組件使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • vue axios請(qǐng)求頻繁時(shí)取消上一次請(qǐng)求的方法

    vue axios請(qǐng)求頻繁時(shí)取消上一次請(qǐng)求的方法

    這篇文章主要介紹了vue axios請(qǐng)求頻繁時(shí)取消上一次請(qǐng)求的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • 使用vuex的時(shí)候,出現(xiàn)this.$store為undefined問(wèn)題

    使用vuex的時(shí)候,出現(xiàn)this.$store為undefined問(wèn)題

    這篇文章主要介紹了使用vuex的時(shí)候,出現(xiàn)this.$store為undefined問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • vue 進(jìn)階之實(shí)現(xiàn)父子組件間的傳值

    vue 進(jìn)階之實(shí)現(xiàn)父子組件間的傳值

    這篇文章主要介紹了vue 進(jìn)階之實(shí)現(xiàn)父子組件間的傳值,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04

最新評(píng)論