問題:
在使用cube-scroll(封裝better-scroll)作為vue移動端專案的滾動插件,出現了如下問題,初始化之后不能滾動,重繪之后又可以滾動。
目前暫時解決方案:
我在請求資料完成的回呼函式中,添加了如下代碼,

使用setTimeout始終不是好的解決方案,各位大佬有另外的方案嗎?
uj5u.com熱心網友回復:
有人遇到過同樣的問題么uj5u.com熱心網友回復:
這是之前寫的關于better-scroll的組件或許可以幫助到你https://github.com/zjfcool/vue-music/blob/master/src/base/scroll.vue如果你寫的組件跟這差不多,八成是樣式的問題,看情形應該是沒有監聽data變化的時候去再次refresh。uj5u.com熱心網友回復:
其實問題的核心就是:資料在渲染之前,就已經初始化完組件。
理想的邏輯是:
資料獲取完畢。
dom結點渲染完畢。
初始化/更新組件。
但總是不能達到這個效果。
uj5u.com熱心網友回復:
獲取 你在獲取資料是 使用 async 或是 promise 做一次異步 呼叫初始化uj5u.com熱心網友回復:
跟這沒關系,你資料如果是一直變的呢?解決思路應該是這樣:
當資料變動的時候去重新refresh,激活better-scroll,重新計算滾動距離。
類似這種:
watch:{
data(){
setTimeout(()=>{
this.refresh();
},this.refreshDelay)
}
}
uj5u.com熱心網友回復:
滾動組件 你要考慮用戶觸發滾動了, 在去呼叫方法,我不知道你的滾動組件是怎么做的,
但是所有的類似list組件基本都是大同小異,
監聽用戶scroll 滾動,在去做一些操作,獲取或是更新資料
uj5u.com熱心網友回復:
太棒了,解決了困擾好久的問題,一直在mounted那里this.scroll.refresh(),結果壓根沒有用,看來還是要清楚組件渲染的流程轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/237296.html
標籤:其他技術討論專區
上一篇:如何把本地圖片轉換成網址
下一篇:WPF程式記憶體釋放?
