美文网首页ionic3+ionic2实战Ionic +
SNS项目笔记<五>--content滚动の坑

SNS项目笔记<五>--content滚动の坑

作者: stormKid | 来源:发表于2017-08-23 10:47 被阅读140次

项目中,在使用<ion-content>滚动到底部的时候,一直使用其官方的scrollToBottom(),但是在实际运行的时候,总是无法显示出效果,这里就很奇怪了,官方也未做任何对于它的解释,为啥在同步情况下无法达到最终的效果?最终博主检查代码,发现了其中的坑。

直接使用,未处理.gif

在努力寻找并翻阅源代码的时候发现:

centent源代码.jpg

也就是说在content源代码中,有个ScrollView,也就是说对content滚动操作都是对这个scrollview进行滚动操作。于是我们翻阅了scrollview的源代码。

ScrollView源代码:
ScrollView源代码1.jpg
ScrollView源代码2.jpg

不难理解在对content调用任何的关于滚动的方法都会触及到ScrollView,也就是说每次滚动调用ScrollView的方法,再看看ScrollView本身调用的方法的注释"DOM WRITE" 为耗时操作,所以需要handler之类的异步处理方式。而既然进行dom操作,那么我们再进入dom的ts源码进行查阅与分析:

dom源码部分.png

即包含有handler的有这么几个方法,这些方法都是处理耗时操作的。这里博主推荐用setTimeout进行处理handler,因为可以自己控制此耗时操作的时间,可以在网络请求数据并填充数据【这里angular通过数据绑定,进行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

相关文章

网友评论

  • 偷得浮生半日闲呐:你好,想问一下你这个输入框在手机端的时候可以随软键盘移动吗
    偷得浮生半日闲呐: @stormKid 我也发现这点了😂
    stormKid: @偷得浮生半日闲呐 确定了以下几点:1、ios如果底部没有写在<ion-footer></ion-footer>标签中就顶不起来,相反写在此标签中就可以;2、ios键盘有个 accessory bar很挡视线,可以通过cordova-keyboard
    插件来控制显示隐藏;3、以上问题android均正常,只是android上弹的时候,<ion-content></ion-content>里面的内容没有上弹,以上请知悉。
    stormKid:@偷得浮生半日闲呐 Android没问题呢,IOS是有问题的,这个还在研究中

本文标题:SNS项目笔记<五>--content滚动の坑

本文链接:https://www.haomeiwen.com/subject/inpldxtx.html