element-ui里el-progress:進度條問題的解決Invalid prop: custom validator check failed for prop "percentage


element-ui里el-progress:Invalid prop: custom validator check failed for prop "percentage"


上面的進度條我是用element-ui里的el-progress進度條的,這里面得到的百分比肯定是從后端拿到數據進行計算,然后綁定上去:
//假設后端返回的數據分別有Online/Total
<el-progress 
    :text-inside="true" 
    :stroke-width="24" 
    :percentage="parseInt((Online/Total)*100)"       // 計算百分比
    status="success"
 ></el-progress>

然后運行發現控制台報錯:

想了一下,這個問題是由於dom已經渲染完成了,而數據還沒回來,所以組件檢測不到這個必傳的參數,那就給組件上加一個v-if<el-progress 
    :text-inside="true" 
    :stroke-width="24" 
    :percentage="parseInt((Online/Total)*100)"       // 計算百分比
    v-if="parseInt((Offline/Total)*100))"     // 監測有值的時候渲染
    status="success"
 ></el-progress>
1
這么一來,控制台是不報錯了,但是當計算出的百分值=0的時候,這個0就轉化成了false,這個進度條自然就沒了,所以:

<el-progress 
    :text-inside="true" 
    :stroke-width="24" 
    :percentage="parseInt((Online/Total)*100)"       // 計算百分比
    v-if="!isNaN(parseInt((Offline/Total)*100)))"     // 監測有值並且為數字的時候渲染
    status="success"
 ></el-progress>

用isNaN監測,計算出來是不是為數字,這樣就好了,因為圖展示方便,將表達式寫在了行間,最好是寫在計算屬性里。

就醬兒

一分鍾以后我想了一下,上面這樣寫有點傻,寫一個公共的布爾值showProgress: false,在接口返回數據后再讓它showProgress = true,用這一個變量來v-if就好了。

隔了半個小時,我又想了一下,用一個公共的變量來處理的話,如果接口返回數據成功,但是少了某一個進度條的數據字段,那計算完了還是報錯,但是第一種辦法就不會,如果沒返回某個字段,那這個進度條就消失,正好。
主要看需求。

我又想了一下,這個不是dom渲染在數據回來之前嗎,這個接口請求可以放在Vuex里面請求,然后在入口頁App.vue里面commit這個接口事件,將數據存在狀態管理庫里,進入這個頁面直接去取。
————————————————
版權聲明:本文為CSDN博主「慢半拍、」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/huanhuan03/article/details/103924501

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM