事出有因
之前面試被問到的native和self相關問題,self我覺得自己應該能回答出來,可能被之前一小時的問題整懵逼了。尷尬~~
自己研究了一下,不足之處望補充,相互進步
native
修飾符native,有什么用
惡補一下
結合代碼說得明白
<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>
注意點
為什么有時候組件點擊事件不會生效
猜測
所以
直接.native將事件綁定到子組件html標簽上,類似dom.addEventListener('click', handler)
self
作用
引用官方說明
<!-- 只當在 event.target 是當前元素自身時觸發處理函數 --> <!-- 即事件不是從內部元素觸發的 --> <div v-on:click.self="doThat">...</div>
結合代碼說明
<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,當添加self時,只有當兩者相等時才會觸發回調
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。