使用Vue父子組件通信實(shí)現(xiàn)todolist的功能示例代碼
先上代碼
<body>
<div id="root">
<div>
<input v-model="inputValue" />
<button @click="handleClick">submit</button>
</div>
<ul>
<todolist v-for="(item,index) of list"
:key="index"
:content="item"
:index="index"
@delete="handle"
></todolist>
</ul>
</div>
<script>
Vue.component("todolist",{
props: ['content','index'],
template: '<li @click="handleDelete">{{content}}</li>',
methods: {
handleDelete:function(){
this.$emit('delete',this.index)
}
}
})
new Vue({
el:"#root",
data: {
inputValue:'',
list:[]
},
methods: {
handleClick:function(){
this.list.push(this.inputValue)
this.inputValue=''
},
handle:function(index){
this.list.splice(index,1)
}
}
})
</script>
</body>
創(chuàng)建todolist的基本結(jié)構(gòu)
<div id="root">
<div>
<input v-model="inputValue" />
<button @click="handleClick">submit</button>
</div>
<ul>
<todolist v-for="(item,index) of list"
:key="index"
:content="item"
:index="index"
@delete="handle"
></todolist>
</ul>
</div>
在這里我們創(chuàng)建了一個(gè)todolist標(biāo)簽作為父組件,讓它在里面循環(huán)遍歷list作為我們的輸出,同時(shí)定義了一個(gè)delete的監(jiān)聽(tīng)事件。
接下來(lái)在script標(biāo)簽里定義子組件
Vue.component("todolist",{
props: ['content','index'],
template: '<li @click="handleDelete">{{content}}</li>',
methods: {
handleDelete:function(){
this.$emit('delete',this.index)
}
}
})
定義了一個(gè)全局類(lèi)型的子組件,子組件的props選項(xiàng)能夠接收來(lái)自父組件數(shù)據(jù),props只能單向傳遞,即只能通過(guò)父組件向子組件傳遞,這里將上面父組件的content和index傳遞下來(lái)。
將li標(biāo)簽作為子組件的模板,添加監(jiān)聽(tīng)事件handleDelete用與點(diǎn)擊li標(biāo)簽進(jìn)行刪除。
在下面定義子組件的handleDelete方法,用this.$emit向父組件實(shí)現(xiàn)通信,這里傳入了一個(gè)delete的event,參數(shù)是index,父組件通過(guò)@delete監(jiān)聽(tīng)并接收參數(shù)
接下來(lái)是Vue實(shí)例
new Vue({
el:"#root",
data: {
inputValue:'',
list:[]
},
methods: {
handleClick:function(){
this.list.push(this.inputValue)
this.inputValue=''
},
handle:function(index){
this.list.splice(index,1)
}
}
})
handleClick方法實(shí)現(xiàn)每次點(diǎn)擊submit按鈕時(shí)向list里添加值,在每次添加之后將輸入框清空。
而handle方法則是點(diǎn)擊刪除li標(biāo)簽,這里通過(guò)接受傳入的index參數(shù)來(lái)判斷點(diǎn)擊的是哪一個(gè)li
這是刪除前:

這是刪除后:

總結(jié):
通過(guò)點(diǎn)擊子組件的li實(shí)現(xiàn)向外觸發(fā)一個(gè)delete事件,而父組件監(jiān)聽(tīng)了子組件的delete事件,執(zhí)行父組件的handle方法,從而刪除掉對(duì)應(yīng)index的列表項(xiàng),todolist中的list對(duì)應(yīng)項(xiàng)也會(huì)被刪除掉。
好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
- 使用VueCli3+TypeScript+Vuex一步步構(gòu)建todoList的方法
- 詳解vuex的簡(jiǎn)單todolist例子
- webpack4手動(dòng)搭建Vue開(kāi)發(fā)環(huán)境實(shí)現(xiàn)todoList項(xiàng)目的方法
- vue實(shí)現(xiàn)todolist基本功能以及數(shù)據(jù)存儲(chǔ)功能實(shí)例詳解
- Vue實(shí)現(xiàn)todolist刪除功能
- Vue中父子組件通訊之todolist組件功能開(kāi)發(fā)
- vue todo-list組件發(fā)布到npm上的方法
- vue組件編寫(xiě)之todolist組件實(shí)例詳解
- 使用Vue完成一個(gè)簡(jiǎn)單的todolist的方法
- Vue實(shí)現(xiàn)todo應(yīng)用的示例
相關(guān)文章
vue 彈框產(chǎn)生的滾動(dòng)穿透問(wèn)題的解決
這篇文章主要介紹了vue 彈框產(chǎn)生的滾動(dòng)穿透問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
vue.js中for循環(huán)如何實(shí)現(xiàn)異步方法同步執(zhí)行
這篇文章主要介紹了vue.js中for循環(huán)如何實(shí)現(xiàn)異步方法同步執(zhí)行問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
Vue2集成ElementUI實(shí)現(xiàn)左側(cè)菜單導(dǎo)航功能
本文主要記錄兩個(gè)菜單的生成方式,通過(guò)在前端router/index.js中直接進(jìn)行配置,后端返回菜單數(shù)據(jù)進(jìn)行對(duì)應(yīng),可以通過(guò)后端返回的菜單數(shù)據(jù)控制權(quán)限,另一種是部門(mén)靜態(tài)導(dǎo)航,然后再拼接動(dòng)態(tài)導(dǎo)航,生成完成頁(yè)面導(dǎo)航,感興趣的朋友一起看看吧2025-04-04
vue使用Print.js打印頁(yè)面樣式不出現(xiàn)的解決
這篇文章主要介紹了vue使用Print.js打印頁(yè)面樣式不出現(xiàn)的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
vue-admin-template模板添加tagsview的實(shí)現(xiàn)
本文主要介紹了vue-admin-template模板添加tagsview的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
Vue高性能列表GridList組件及實(shí)現(xiàn)思路詳解
這篇文章主要為大家介紹了Vue高性能列表GridList組件及實(shí)現(xiàn)思路詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
vue與vue-i18n結(jié)合實(shí)現(xiàn)后臺(tái)數(shù)據(jù)的多語(yǔ)言切換方法
下面小編就為大家分享一篇vue與vue-i18n結(jié)合實(shí)現(xiàn)后臺(tái)數(shù)據(jù)的多語(yǔ)言切換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
詳解Vue的watch中的immediate與watch是什么意思
這篇文章主要介紹了詳解Vue的watch中的immediate與watch是什么意思,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
在vue中使用el-tab-pane v-show/v-if無(wú)效的解決
這篇文章主要介紹了在vue中使用el-tab-pane v-show/v-if無(wú)效的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08

