Vue中$emit調(diào)用父組件異步方法模擬.then實(shí)現(xiàn)方式
$emit調(diào)用父組件異步方法模擬.then實(shí)現(xiàn)
需求
有一個(gè)封裝好的彈窗子組件,點(diǎn)確認(rèn)時(shí)$emit父組件刪除方法,父組件刪除接口調(diào)用成功后需要調(diào)用子組件close()方法。
- 方法:1可以直接$refs.dialog.close()關(guān)閉彈窗
- 方法2:可以模擬.then在子組件實(shí)現(xiàn)這一邏輯
父組件事件:
delConfirm(params, callback) { // reqName是請(qǐng)求名 reqName(params).then(res => { if (res.success) { this.$message.success('刪除成功!') callback() // 回調(diào)子組件關(guān)閉彈窗 this.getList() // 刪除一條后刷新列表 } }) },
子組件確認(rèn)按鈕事件:
confirm() { // params是攜帶的參數(shù) 傳給父組件 callback后回調(diào)的內(nèi)容是close()方法 this.$emit('delConfirm', this.params, () => { this.close() }) }
$emit調(diào)用父組件異步方法,返回結(jié)果后再執(zhí)行子組件的方法
現(xiàn)象
子組件請(qǐng)求父組件的方法,觸發(fā)數(shù)據(jù)更新,待數(shù)據(jù)返回后,才能進(jìn)行后續(xù)的操作
解決
使用回調(diào)函數(shù)的方式
父組件:
async getTaskListDetails(callback = () => {}) { const { pageSize, currentPage } = this.pagination const [res, err] = await taskListDetails({ limit: pageSize, start: pageSize * (currentPage - 1) }) if (err) return this.$message.error(err?.msg || '請(qǐng)求失敗') if (res.code !== 200) return this.$message.error(res?.msg || '請(qǐng)求失敗') this.dataList = res?.data?.list || [] this.mainTask = res.data.main_task this.pagination.total = res.data.count callback(this.dataList) }
子組件:
this.$emit('updateList', (res) => { this.checkTaskProgress(res) })
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue中的keep-alive詳解與應(yīng)用場(chǎng)景
keep-alive是vue中的內(nèi)置組件,能在組件切換過(guò)程中將狀態(tài)保留在內(nèi)存中,防止重復(fù)渲染DOM,本文給大家介紹vue中的keep-alive詳解與應(yīng)用場(chǎng)景,感興趣的朋友一起看看吧2023-11-11使用vue進(jìn)行Lodop打印的一些常用方法小結(jié)
這篇文章主要給大家介紹了關(guān)于使用vue進(jìn)行Lodop打印的一些常用方法,需要進(jìn)行打印功能,Lodop就是實(shí)現(xiàn)需求的插件,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07element中drawer模板的實(shí)現(xiàn)
本文主要介紹了element中drawer模板的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Vue?3.0?v-for中的Ref數(shù)組用法小結(jié)
在?Vue?2?中,在?v-for?里使用的?ref?attribute會(huì)用ref?數(shù)組填充相應(yīng)的?$refs?property,本文給大家介紹Vue?3.0?v-for中的Ref數(shù)組的相關(guān)知識(shí),感興趣的朋友一起看看吧2023-12-12Vue實(shí)現(xiàn)讓頁(yè)面加載時(shí)請(qǐng)求后臺(tái)接口數(shù)據(jù)
這篇文章主要介紹了Vue實(shí)現(xiàn)讓頁(yè)面加載時(shí)請(qǐng)求后臺(tái)接口數(shù)據(jù)2022-08-08vue+導(dǎo)航錨點(diǎn)聯(lián)動(dòng)-滾動(dòng)監(jiān)聽和點(diǎn)擊平滑滾動(dòng)跳轉(zhuǎn)實(shí)例
今天小編就為大家分享一篇vue+導(dǎo)航錨點(diǎn)聯(lián)動(dòng)-滾動(dòng)監(jiān)聽和點(diǎn)擊平滑滾動(dòng)跳轉(zhuǎn)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11vue使用自定義指令實(shí)現(xiàn)一鍵復(fù)制功能
在Vue中,通過(guò)自定義指令v-copy和document.execCommand方法,可以實(shí)現(xiàn)點(diǎn)擊按鈕復(fù)制內(nèi)容到剪貼板的功能,適用于處理長(zhǎng)文本或多行文本的復(fù)制需求,而readonly屬性可避免內(nèi)容被修改和移動(dòng)設(shè)備上的虛擬鍵盤干擾,感興趣的朋友一起看看吧2024-09-09網(wǎng)站國(guó)際化多語(yǔ)言處理工具i18n安裝使用方法圖文詳解
國(guó)際化是設(shè)計(jì)軟件應(yīng)用的過(guò)程中應(yīng)用被使用與不同語(yǔ)言和地區(qū),下面這篇文章主要給大家介紹了關(guān)于網(wǎng)站國(guó)際化多語(yǔ)言處理工具i18n安裝使用方法的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09