Vue之自定義事件內(nèi)容分發(fā)詳解
1、小伙伴們這個(gè)理解起來(lái)有點(diǎn)復(fù)雜,希望仔細(xì)看里面的原理,自己去敲一遍:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app">
<todo>
<xian slot="xian" :title="title"></xian>
// 建議從后面往前看,理解為遍歷得到的值賦值給v-bind,v-bind的值賦值給props同名的值
// [提醒]v-on:綁定的自定義事件名會(huì)自動(dòng)變成小寫,如果有人事件名用了大寫,下面this.$emit里仍然是大寫,會(huì)綁定不上
<yu slot="yu" v-for="(item,index) in items"
v-bind:item="item" v-bind:index="index"
v-on:remove="deleteItems(index)"></yu>
// Vue實(shí)例將數(shù)據(jù)和方法與View層綁定,View層在分發(fā)這些數(shù)據(jù)和方法到下面的組件綁定,View相當(dāng)于中轉(zhuǎn)了Vue實(shí)例的數(shù)據(jù)和方法交由組件控制
</todo>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
Vue.component("todo",{
template: '<div>\
<slot name="xian"></slot>\
<ul>\
<slot name="yu"></slot>\
</ul>\
</div>'
});
Vue.component("xian",{
props: ['title'],
template: '<div>{{title}}</div>'
});
Vue.component("yu",{// props是參數(shù)名,類似于變量名,可以隨便定義,v-bind綁定的是變量,是數(shù)據(jù),是定義的變量
props: ['item','index'],
// 只能綁定當(dāng)前組件的方法
template: '<li>{{index}}---->{{item}}<button @click="remove">delete</button></li>',
methods: {
remove: function (index) {
// this.$emit 自定義事件分發(fā)
// 【注意】this.$emit('事件名')這個(gè)事件名要使用kebab-case(短橫線命名)方式,不要寫成camelCased (駝峰式);
this.$emit('remove',index);
}
}
});
var vm = new Vue({
el: "#app",
data: {
title: "作者",
items: ['咸魚翻身1','咸魚翻身2','咸魚翻身3']
},
methods: {
deleteItems: function (index) {
console.log("您刪除了"+this.items[index]);
this.items.splice(index,1);
}
}
});
</script>
</body>
</html>
運(yùn)行結(jié)果:

當(dāng)我們點(diǎn)擊刪除就能刪除任意的作者名字,這里我點(diǎn)擊刪除第二個(gè),顯示結(jié)果如下:

2、這里有一個(gè)圖供大家理解:

理解大概是這樣 組件和實(shí)例之間方法不能互調(diào) 而要?jiǎng)h除的節(jié)點(diǎn)屬于實(shí)例的屬性 所以通過(guò)事件分發(fā)讓組件中定義的方法轉(zhuǎn)向?qū)嵗卸x的方法 然后刪除節(jié)點(diǎn)
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
vue3中封裝axios請(qǐng)求最新實(shí)現(xiàn)步驟
這篇文章主要給大家介紹了關(guān)于vue3中封裝axios請(qǐng)求的最新實(shí)現(xiàn)步驟,在Vue 3中可以通過(guò)封裝axios來(lái)實(shí)現(xiàn)接口的統(tǒng)一管理和調(diào)用,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04
vue中watch和computed為什么能監(jiān)聽到數(shù)據(jù)的改變以及不同之處
這篇文章主要介紹了vue中watch和computed為什么能監(jiān)聽到數(shù)據(jù)的改變以及不同之處,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12
對(duì)vue中v-on綁定自定事件的實(shí)例講解
今天小編就為大家分享一篇對(duì)vue中v-on綁定自定事件的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
vscode 開發(fā)Vue項(xiàng)目的方法步驟
這篇文章主要介紹了vscode 開發(fā)Vue項(xiàng)目的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
Vue實(shí)現(xiàn)base64編碼圖片間的切換功能
這篇文章主要介紹了Vue實(shí)現(xiàn)base64編碼圖片間的切換功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12
Element框架el-tab點(diǎn)擊標(biāo)簽頁(yè)時(shí)再渲染問(wèn)題的解決
本文主要介紹了Element框架el-tab點(diǎn)擊標(biāo)簽頁(yè)時(shí)再渲染問(wèn)題的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
Vue數(shù)據(jù)驅(qū)動(dòng)模擬實(shí)現(xiàn)3
這篇文章主要為大家詳細(xì)介紹了Vue數(shù)據(jù)驅(qū)動(dòng)模擬實(shí)現(xiàn),教大家如何在某個(gè)對(duì)象中,新增某個(gè)屬性,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
Vue.js 2.0學(xué)習(xí)教程之從基礎(chǔ)到組件詳解
這篇文章主要介紹了Vue.js 2.0從基礎(chǔ)到組件的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue.js具有一定的參考價(jià)值,需要的朋友可以參考學(xué)習(xí),下面來(lái)一起看看吧。2017-04-04
vue實(shí)現(xiàn)無(wú)限消息無(wú)縫滾動(dòng)
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)無(wú)限消息無(wú)縫滾動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04

