最近在維護基於vux UI的移動項目中使用vux的range組件發現兩個坑。在網上搜不到解決辦法(可能使用人員比較少)的情況下研究這個組件源碼解決我所遇到的兩個問題。
問題一:
直接引用range組件出現原點拖動不了的情況。
解決方案:
1、在range組件的外層加v-if。(重點説這個) 2、查看元素層級關係
問題二:
修改綁定在range組件的V-model的data數字會出現沒法累加的情況。目前出現23過渡24的時候沒自動變回23。 71過渡72的時候會自動變回71。
解決方案:
在range組件中設置:step='0.5' 當然這個不是最好的解決方案是用來規避vux內置方法中計算問題。
沒興趣可以跳過以下分析源碼中出現問題的原因:
問題一:
詳細的思路我就不細説了關鍵問題的源碼:
打印出來的結果是這個元素的寬度獲取到的是auto。所以導致range寫的計算方法出錯導致拖動不了。就是説進入range 初始化時該元素寬度有問題 (我這裏是因為range嵌套在 vux diolog組件導致的)
在外層加上v-if 保障我外層diolog出現以後再加載rang進行初始化。 問題解決
問題二
點擊加號將range的百分數+1。發現到23的時候死活加不上去。
後來用最原始方法,console打印法找到問題的點出現在哪裏,先説結論:**問題出現在vux裏封裝滑動條滑動距離佔總距離百分比的方法裏。 23-過渡到 24的計算結果是23.49145299145299 取整後又變回23。所以數字