【ionic框架bug】slidebox在使用model或popover后width变为0的解决方案
问题描述
如果在silideBox上使用缓存,那么在进入另一个state之后,打开一个Popover或者一个Modal,再返回原来的页面,则slideBox的width变为0,即看不见silideBox的内容了。
解决方案
一.使用ng-if
即不使用缓存,但是这样的弊端就是没有缓存-.-,其实原理就是每次重新渲染slidebox。
二.使用$ionicSlideBoxDelegate.update()
在每次进入页面的时候执行此方法,会让slideBox重新计算宽度和高度。判断进入页面的方法可以是监听$ionicView.enter或者$stateChangeSuccess,建议后者,其中封装的有stateFrom、stateTo等方法方便判断页面的跳转,并且反应较前者快很多。
三.修改ionic源码(建议)
为什么说这个是ionic的框架bug,就是因为它的源码写的有缺陷,导致一些莫名其妙的问题。所以打开ionic.bundle.js查看它的源码(只展示一开始的一部分):
ionic.views.Slider = ionic.views.View.inherit