SNS項目筆記<五>--content滾動の坑

項目中,在使用<ion-content>滾動到底部的時候,一直使用其官方的scrollToBottom(),但是在實際運(yùn)行的時候,總是無法顯示出效果,這里就很奇怪了,官方也未做任何對于它的解釋,為啥在同步情況下無法達(dá)到最終的效果?最終博主檢查代碼,發(fā)現(xiàn)了其中的坑。

直接使用,未處理.gif

在努力尋找并翻閱源代碼的時候發(fā)現(xiàn):

centent源代碼.jpg

也就是說在content源代碼中,有個ScrollView,也就是說對content滾動操作都是對這個scrollview進(jìn)行滾動操作。于是我們翻閱了scrollview的源代碼。

ScrollView源代碼:
ScrollView源代碼1.jpg

ScrollView源代碼2.jpg

不難理解在對content調(diào)用任何的關(guān)于滾動的方法都會觸及到ScrollView,也就是說每次滾動調(diào)用ScrollView的方法,再看看ScrollView本身調(diào)用的方法的注釋"DOM WRITE" 為耗時操作,所以需要handler之類的異步處理方式。而既然進(jìn)行dom操作,那么我們再進(jìn)入dom的ts源碼進(jìn)行查閱與分析:

dom源碼部分.png

即包含有handler的有這么幾個方法,這些方法都是處理耗時操作的。這里博主推薦用setTimeout進(jìn)行處理handler,因為可以自己控制此耗時操作的時間,可以在網(wǎng)絡(luò)請求數(shù)據(jù)并填充數(shù)據(jù)【這里angular通過數(shù)據(jù)綁定,進(jìn)行domwrite操作,同樣耗時,所以需要異步延遲處理】后,用來處理這樣的耗時操作,于是有了以下代碼:

  @ViewChild(Content) content :Content
  setTimeout (()=>{
       content._scroll.scrollToBottom()
  } ,1000)

將此方法甚至能夠封裝成一個utils:

  export class Utils{
  
      public static toMoveBottom(content:Content){
          setTimeout(()=>{content._scoll.scrollToBottom()},1000)
    }

}

最后看看處理后的效果:

處理后的效果.gif
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容