ElementUI的this.$notify.close()調(diào)用不起作用的解決
需求描述
項(xiàng)目首先要用戶選擇某個(gè)問(wèn)題,選擇之后使用ElementUI的Notification組件提示用戶正在對(duì)文件格式進(jìn)行檢查(需要先提交給后端,交給后端檢查,再返回結(jié)果給前端)。如果格式檢查無(wú)誤,則關(guān)閉Notification,彈出一個(gè)MessageBox(也是ElementUI的組件),告知用戶上傳文件之后不可撤銷。
問(wèn)題描述
在檢查文件格式是否正確之后,需要手動(dòng)調(diào)用相關(guān)函數(shù),把Notification去掉。根據(jù)官方文檔,使用this.$notify.close()并沒(méi)有起作用,并且控制臺(tái)沒(méi)有報(bào)錯(cuò)。
問(wèn)題分析
在控制臺(tái)打印this.$notify之后,可以進(jìn)入Notification的相關(guān)函數(shù)如圖:

在代碼中,我們可以看到Notification內(nèi)部封裝了哪些函數(shù),其中就包含close()函數(shù),該函數(shù)需要兩個(gè)參數(shù),id和userOnClose。查看代碼不難看出,id就是Notification的id,比如存在多個(gè)Notification的時(shí)候,可以選擇性的關(guān)閉;userOnClose可以傳入一個(gè)函數(shù),有一點(diǎn)兒像回調(diào)函數(shù)。因此,想要使用close()這個(gè)函數(shù),必須知道想要關(guān)閉的那個(gè)Notification的id,文末再簡(jiǎn)單探討。
往下看代碼,可以看到有一個(gè)closeAll()函數(shù),該函數(shù)不需要傳入任何參數(shù),并且通過(guò)遍歷將所有Notification都關(guān)閉,適用于本項(xiàng)目的情景(只有一個(gè)Notification需要關(guān)閉)。
問(wèn)題解決
對(duì)于本項(xiàng)目來(lái)說(shuō),直接調(diào)用this.$notify.closeAll()就行了。
問(wèn)題拓展
主要就是對(duì)于有多個(gè)Notification,想要關(guān)閉其中一個(gè)怎么辦?我嘗試去理解notify.js,發(fā)現(xiàn)id基本上是notification_seed這樣的模式,即notification_字符串加上一個(gè)數(shù)字組成的字符串。查看源碼,發(fā)現(xiàn)初始seed為1,也就是第一個(gè)實(shí)例化的Notification的id就應(yīng)該是notification_1。如圖:

現(xiàn)在問(wèn)題來(lái)了,我調(diào)用close()函數(shù),并且傳入兩個(gè)貌似應(yīng)該正確的參數(shù),發(fā)現(xiàn)沒(méi)起作用:

為了防止我對(duì)id的理解有誤,我在瀏覽器中進(jìn)行調(diào)試,發(fā)現(xiàn)instance(Notification的實(shí)例)里面的id確實(shí)就是我分析的那個(gè)id:

于是我再結(jié)合開(kāi)發(fā)者工具中的調(diào)試工具,一步步查看notify.js里面的close()函數(shù)的代碼的執(zhí)行步驟,我發(fā)現(xiàn),代碼都沒(méi)有問(wèn)題,邏輯上也沒(méi)有問(wèn)題,最后instances也通過(guò)splice函數(shù)把對(duì)應(yīng)id的Notification給剔除了,但是頁(yè)面上的Notification就是堅(jiān)挺在那里沒(méi)有消失(矩形框里面是主要函數(shù))。

以上是個(gè)人嘗試的一些分析,當(dāng)然,由于能力有限,最后也沒(méi)有解決。感興趣的大佬可以研究一下。
到此這篇關(guān)于ElementUI的this.$notify.close()調(diào)用不起作用的解決的文章就介紹到這了,更多相關(guān)Element this.$notify.close()調(diào)用=內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
webpack4+Vue搭建自己的Vue-cli項(xiàng)目過(guò)程分享
這篇文章主要介紹了webpack4+Vue搭建自己的Vue-cli,對(duì)于vue-cli的強(qiáng)大,使用過(guò)的人都知道,極大的幫助我們降低了vue的入門(mén)門(mén)檻,感興趣的朋友跟隨腳本之家小編一起看看吧2018-08-08
vue data恢復(fù)初始化數(shù)據(jù)的實(shí)現(xiàn)方法
今天小編就為大家分享一篇vue data恢復(fù)初始化數(shù)據(jù)的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10
Vue3使用時(shí)應(yīng)避免的10個(gè)錯(cuò)誤總結(jié)
Vue?3已經(jīng)穩(wěn)定了相當(dāng)長(zhǎng)一段時(shí)間了。許多代碼庫(kù)都在生產(chǎn)環(huán)境中使用它,其他人最終都將不得不遷移到Vue?3。我現(xiàn)在有機(jī)會(huì)使用它并記錄了我的錯(cuò)誤,下面這些錯(cuò)誤你可能想要避免2023-03-03
vue實(shí)現(xiàn)數(shù)字動(dòng)態(tài)翻牌器
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)數(shù)字動(dòng)態(tài)翻牌器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
前端XSS攻擊場(chǎng)景詳解與Vue.js處理XSS的方法(vue-xss)
這篇文章主要給大家介紹了關(guān)于前端XSS攻擊場(chǎng)景與Vue.js使用vue-xss處理XSS的方法,介紹了實(shí)際工作中渲染數(shù)據(jù)時(shí)遇到XSS攻擊時(shí)的防范措施,以及解決方案,需要的朋友可以參考下2024-02-02
解決vue運(yùn)行報(bào)錯(cuò)Error:Cannot?find?module?'@vue/cli-plugin-b
解決了因?yàn)榘姹締?wèn)題在創(chuàng)建項(xiàng)目時(shí)出現(xiàn)的各種報(bào)錯(cuò)問(wèn)題,這次在運(yùn)行時(shí)出現(xiàn)的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于解決vue運(yùn)行報(bào)錯(cuò)Error:Cannot?find?module?'@vue/cli-plugin-babel'的相關(guān)資料,需要的朋友可以參考下2023-04-04

