最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年07月09日 17:08:31   作者:Infinity  
這篇文章主要給大家介紹了關(guān)于Vue事件修飾符native、self的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

事出有因

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

native

修飾符native,有什么用

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

惡補(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('父級')
   }
  }
 })

</script>

注意點(diǎn)

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

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

猜測

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

所以

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

self

作用

引用官方說明

<!-- 只當(dāng)在 event.target 是當(dāng)前元素自身時觸發(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時,只有當(dāng)兩者相等時才會觸發(fā)回調(diào)

總結(jié)

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

相關(guān)文章

最新評論

新竹市| 友谊县| 易门县| 盐边县| 辽宁省| 海宁市| 海南省| 都江堰市| 哈尔滨市| 清水县| 周宁县| 修武县| 海阳市| 茶陵县| 洱源县| 剑川县| 本溪市| 互助| 习水县| 慈溪市| 和平区| 济源市| 广灵县| 盐津县| 宁城县| 南京市| 筠连县| 台东市| 乌恰县| 宁夏| 洪洞县| 铁岭市| 卢湾区| 闵行区| 青冈县| 安仁县| 平泉县| 邯郸县| 新巴尔虎左旗| 延庆县| 彝良县|