国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Vue事件修飾符native、self示例詳解

2019-11-19 11:12:17
字體:
供稿:網(wǎng)友

事出有因

之前面試被問到的native和self相關(guān)問題,self我覺得自己應(yīng)該能回答出來,可能被之前一小時(shí)的問題整懵逼了。尷尬~~
自己研究了一下,不足之處望補(bǔ)充,相互進(jìn)步

native

修飾符native,有什么用

  1. native是原生事件(第一反應(yīng),當(dāng)時(shí)沒然后了...)

惡補(bǔ)一下

  1. native 一定是用于自定義組件,也就是自定義的html標(biāo)簽

結(jié)合代碼說得明白

<body> <div id="app">  <div class="box" >   <Son @click='handler1'></Son>  </div> </div></body><script> const Son = Vue.component('Son', {  template: '<button @mouseover=handler2 class="box1">son</button>',  methods: {   handler2 (e) {       }  } }) new Vue({  el: "#app",  components: {   Son  },  data() {   return {    a: 123   }  },  methods: {   handler1 (e) {    console.log('父級(jí)')   }  } })</script>

注意點(diǎn)

  1. 當(dāng)<Son @click='handler1'></Son>,子組件中的this.$listeners返回的是{click: ƒ},box1的dom上沒有綁定click事件(可以打開F12查看),所以這個(gè)事件不是原生的click
  2. 當(dāng)<Son @click.native='handler1'></Son>,子組件中的this.$listeners返回的是{},box1的dom上綁定了click事件(可以打開F12查看),所以這個(gè)事件是原生的click
  3. 當(dāng)<Son @click.self='handler1'></Son>,子組件中的this.$listeners返回的是{click: ƒ},box1的dom上沒有綁定click事件(可以打開F12查看),所以這個(gè)事件不是原生的click
  4. 子組件的this.$emit('eventTpye')是從this.$listeners返回值中查找的

為什么有時(shí)候組件點(diǎn)擊事件不會(huì)生效

猜測(cè)

  • 子組件html標(biāo)簽沒有定義click原生事件
  • 子組件沒有執(zhí)行this.$emit('click')

所以

直接.native將事件綁定到子組件html標(biāo)簽上,類似dom.addEventListener('click', handler)

self

作用

引用官方說明

<!-- 只當(dāng)在 event.target 是當(dāng)前元素自身時(shí)觸發(fā)處理函數(shù) --><!-- 即事件不是從內(nèi)部元素觸發(fā)的 --><div v-on:click.self="doThat">...</div>

結(jié)合代碼說明

<body> <div id="app">  <div class="box" @click.self='handler1'>   <Son ></Son>  </div> </div></body><script> const Son = Vue.component('Son', {  template: '<button @click=handler2 class="box1">son</button>',  methods: {   handler2 (e) {    console.log(e.target, e.currentTarget)   }  } }) new Vue({  el: "#app",  components: {   Son  },  data() {   return {    a: 123   }  },  methods: {   handler1 (e) {    console.log(e.target, e.currentTarget)   }  } })</script>

就是利用e.target和e.currentTarget,當(dāng)添加self時(shí),只有當(dāng)兩者相等時(shí)才會(huì)觸發(fā)回調(diào)

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)武林網(wǎng)的支持。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 金沙县| 通海县| 嘉黎县| 错那县| 苍溪县| 沂源县| 塘沽区| 北京市| 海宁市| 隆昌县| 台北市| 保德县| 云林县| 武夷山市| 宁波市| 新晃| 宁城县| 黄冈市| 米泉市| 民县| 乡城县| 多伦县| 偃师市| 嘉禾县| 镇赉县| 宁安市| 句容市| 天津市| 湘潭县| 辉县市| 武宣县| 浮梁县| 岐山县| 固始县| 肥乡县| 日照市| 肇东市| 卓资县| 三江| 通山县| 桐乡市|