本來這一章也覺得沒有必要寫的,但是看了一下罚攀,還是寫一些吧坏晦,免得有些地方萬一忘記了,還能回到這里來找找是因?yàn)槭裁丛虺鲥e(cuò)脸哀。
這里的
handleClick
事件不會(huì)觸發(fā)蹦浦,無論怎么點(diǎn)擊都不會(huì)觸發(fā),和上一章有一點(diǎn)點(diǎn)區(qū)別撞蜂,上一章的@click
是寫在了組件內(nèi)的Template
里盲镶,這里是直接寫在組件上。當(dāng)給一個(gè)組件綁定了事件時(shí)蝌诡,實(shí)際上這個(gè)事件綁定的是一個(gè)自定義的事件溉贿,真正的鼠標(biāo)點(diǎn)擊觸發(fā)的事件并不是綁定的
click
事件,如果想觸發(fā)自定義的click
事件浦旱,得這樣寫:如上圖寫宇色,這樣
child click
可以被打印出來,但是外面的click
還是沒有打印出來颁湖,因?yàn)樵?code>div元素上綁定的事件宣蠕,指的是原生事件;而在child
上綁定的事件甥捺,只能是自定義事件抢蚀。自定義事件怎么才能被觸發(fā)呢?
子組件想要觸發(fā)父組件這塊的事件監(jiān)聽镰禾,用
$emit
去觸發(fā)自定義事件皿曲。這里會(huì)先彈出
childClick
,然后再彈出click
唱逢。這里的執(zhí)行邏輯是:首先點(diǎn)擊click的時(shí)候,子組件會(huì)先監(jiān)聽到自身的元素被點(diǎn)擊了屋休,然后再向外觸發(fā)一個(gè)自定義事件惶我,外層在child組件里又監(jiān)聽了這個(gè)自定義事件,所以最后
handleClick
被執(zhí)行博投。但是這樣做太麻煩了,就想直接監(jiān)聽到
child
上的原生事件盯蝴,也有辦法:添加一個(gè)
native
毅哗,這樣監(jiān)聽的就不是內(nèi)部組件向外派發(fā)的自定義事件了,而是原生click
事件