有時(shí)候需要頻繁使用提示框,但是使用一次的代碼量太多随夸,看起來(lái)很不清爽愉阎,且每次都要寫確認(rèn)绷跑,取消。如下
this.$confirm({
title: '提示',
content: '確認(rèn)刪除此條內(nèi)容嗎',
okText:'確定',
cancelText:'取消',
onOk: async()=> {
NProgress.start()
let {data:{success}}=await this.$post('/sys/removest',{ id
})
if (success) {
this.$message.success('刪除成功');
this.getList()}
NProgress.done()
}
});
由于this.$confirm()這個(gè)方法也是通過(guò)this點(diǎn)出來(lái)的氮发,說(shuō)明this都指向Vue,所以我就嘗試把他封裝在mixin中
$mc(title,content,onOk){
this.$confirm({
title,
content,
okText:'確定',
cancelText:'取消',
onOk
});
}
這樣后面就可以在組件中這樣使用
this.$mc('提示','刪除后無(wú)法恢復(fù)',async ()=>{
NProgress.start()
let {data:{success}}=await this.$post('/sys/removest',{ id})
if (success) {
this.$message.success('刪除成功');
this.getList()
}
NProgress.done()
})
但是傳入回調(diào)感覺(jué)還是很亂渴肉,可以在mixin中使用promise來(lái)優(yōu)化
$mc(title,content){
return new Promise((resolve) => {
this.$confirm({
title,
content,
okText:'確定',
cancelText:'取消',
onOk(){
resolve()
}
});
})
}
這樣$mc()方法就是一個(gè)promise對(duì)象,只有點(diǎn)擊確定按鈕才調(diào)用resolve,用戶不點(diǎn)擊確定按鈕爽冕,await后代碼就不執(zhí)行仇祭。以后在組件中調(diào)用時(shí)就會(huì)很方便,直接在后面寫所想做的事就可以了颈畸。
async del(id) {
await this.$mc('提示','刪除后無(wú)法恢復(fù)')
NProgress.start()
let {data:{success}}=await this.$post('/sys/removest',{id})
if (success) {
this.$message.success('刪除成功');
this.getList()
}
NProgress.done()
}