ionic1中ion-slide-box的坑

Posted 前端开发FE

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ionic1中ion-slide-box的坑相关的知识,希望对你有一定的参考价值。

近期,在维护老项目时,在做一个轮播图的新功能时,使用on-slide-box时,遇到的坑在此记录一下,谨防其他人也遇到此坑!

问题:

当slider数据列表是动态获取时,如果数据结果只有2条数据时,slider列表会多复制俩个,造成的问题是显示两个,但是其实html渲染了四个slider,并且多复制出来的两个节点,如果添加了点击事件,时会报错的!

通过下面的slideChange方法做个判断可以解决这个bug
<ion-slide-box auto-play="true" does-continue="true" slide-interval="3000" on-slide-changed="slideChanged($index)">
  <ion-slide ng-repeat="pic in pics"><img ng-src="{{pic}}" src="" alt="" width="" height="" /></ion-slide>
</ion-slide-box>

$scope.slideChanged = function(index) {
$scope.slideIndex = index;
if ( ($ionicSlideBoxDelegate.count() -1 ) == index ) {
$timeout(function(){
$ionicSlideBoxDelegate.slide(0);
},3000);
}
};

$ionicSlideBoxDelegate是一个依赖,不要忘了引入!
虽然说这个方法能解决自动轮播造成的问题,但是当手动操作滑动时,如果你打印$scope.slideIndex = index;这个index,其实还是有问题!

另外一个方法说是修改源代码,如下:
从源文件(ionic.bundle.js)里找到以下代码   
提示:在setup()方法里找

if (slides.length < 2) options.continuous = false;

用下面代码替换:

if (slides.length<2) {
options.initialContinuous=options.continuous;
options.continuous=false;
} else if(options.initialContinuous) {
options.continuous=options.initialContinuous;
}

本人试了一下,好像并没有生效!也有可能确实有效,但我试了确实没有生效,可能是本人自己的问题!

ion-slide-box这个是真的很坑,为了解决此问题,最后还是采用 Swiper, 顺利解决此问题!

网上一搜一堆解决方案,但是基本都是一个答案,实际上手试了才知道,坑有多深!

所以建议,如果不想手写一个,直接用Swiper,省的踩着些个坑,节省点开发时间!
还有一点是,维护老项目,真的很酸爽!


以上是关于ionic1中ion-slide-box的坑的主要内容,如果未能解决你的问题,请参考以下文章

ionic1项目中 ion-slide轮播用ng-repeat遍历数据后自动循环功能失效

ionic 中使用ion-slide-box

ion-slide-box,无限循环

Ionic2优于Ionic1的6个理由

如何离线创建Ionic1项目

无法使用 SQLite 在 ionic1 中创建多个表