为了账号安全,请及时绑定邮箱和手机立即绑定

angular里使用iscroll时如何refresh?

angular里使用iscroll时如何refresh?

茅侃侃 2019-05-23 19:21:52
Angular的项目,引入了iscroll,d.ts文件也写好了,可以初始化没问题,但是当组件更新时,需要调用IScroll.refresh(),根据以往用其他MVVM框架的经验,直接在视图更新完毕的生命周期方法里调用IScroll.refresh()就行了:import*asIScrollfrom'iscroll'exportclassModel_1{scroll:IScrollscroll_option={click:true}asIScroll.IScrollOptionsconstructor(){}ngAfterViewInit(){this.scroll=newIScroll(".scroll-wrapper",this.scroll_option)}ngAfterViewChecked(){this.scroll.refresh()console.log(123)}//....}但此时问题出现了,iscroll加载后在滑动时会无限次触发ngAfterViewChecked()(控制台不断打印出123),导致视图无法正确刷新,请问有遇到过这种问题吗,是如何解决的呢?
查看完整描述

2 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

与react,vue不同,angular的ngAfterViewChecked()钩子会在视图发生任意重绘时触发,并不是像其他框架触发了render才有回调,解决方案是将重载iscroll的方法直接放置于ngAfterViewInit()中:
scrollRefresh(){
setTimeout(()=>{
this.scroll&&this.scroll.refresh()
},130)
}
ngAfterViewInit(){
this.scroll=newIScroll(".scroll-wrapper",this.scroll_option)
this.scrollRefresh()
}
                            
查看完整回答
反对 回复 2019-05-23
?
萧十郎

TA贡献1815条经验 获得超13个赞

ngAfterViewChecked这个hook每次在检测组件内部自己的视图(view)和子组件的视图时都会调用,频率很高的。官网也说明了:
NoticethatAngularfrequentlycallsAfterViewChecked(),oftenwhentherearenochangesofinterest.Writeleanhookmethodstoavoidperformanceproblems.
你说的那个库没有使用过,不过refresh这种刷新逻辑一般不会频繁的触发吧,那只需要在需要触发的时候收到调用就可以了呀,没有必要写到ngAfterViewChecked生命周期函数中吧
                            
查看完整回答
反对 回复 2019-05-23
  • 2 回答
  • 0 关注
  • 287 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信