猛地一看这个标题,可能觉得多此一举,直接$ionicSlideBoxDelegate. $getByHandle(handle). enableSlide(false)设置不就行了?是的,按理说就是这样啊,可是有个问题:我想初始化一个不能滑动的slide呢?
有人说window.onload设置好了啊,可是onload时候angular还没有完成渲染啊,$ionicSlideBoxDelegate. $getByHandle(handle)还是空的。
又有人说,那就angular渲染好了再执行咯。讲真,逻辑上讲确实如此,但是ng并没有ng-load事件,要自己实现,当然,已经可以判断ng加载完成的可以跳过本文章。
罗嗦一堆,进入正题。
首先,我们找到了标签ion-slide-box的定义:
记下留用。
再找到初始化代码:
好长,好吧,跳过不重要的,回归重点:
我们先找到enableSlider函数代码:
看来是否启用就是通过slideIsDisabled这个属性实现的啊。
我们继续查找哪边用了这个参数,于是发现原来touchmove这边使用判断啊,也是判断通过就不执行下面的move事件咯。
不执行的控制属性探究完毕,那么开始走流程,看看是怎么进行设置的。
我们断点进行调试。
首先断点初始化指令。
走啊走走啊走,终于走到了一个值得注意的地方:这里执行了enableSlider函数!
那么查看下信息咯。
信息看完,发现了使用的值disableScroll是undefined,那么看看传入函数的值是什么,true true true,是true啊,继续。
果然是执行了$ionicSlideBoxDelegate. $getByHandle(handle). enableSlide(true)。那么我们就知道了是disableScroll没有设置值导致了这样的结果。
那我们就设置啊。
继续调试,回到刚刚判断值的地方,果然disableScroll变成了”true”。
我们看看传入enableSlide函数的值,变成false啦!
赶紧进enableSlide瞅了瞅,变了变了。
于是画面上尝试,果然初始化禁掉了(太丑就不上效果了),于是任务完成,ion-slider-box上加上disable-scroll="true"就可以了哦。