我们都知道Ionic3为我们提供了一套丰富易用的UI组件库,然而凡事是都有不完美之处,今天我们来看一下ionic3 slides组件在实现轮播功能时候的小问题。

先开UI小姐姐给到的3张美美哒效果图

接下来是home.html下的组件使用

<div class="slide-wrap">

<ion-slides pager loop="true" autoplay="3000" >

<ion-slide>

<h1><img src="assets/imgs/banner.png"></h1>

</ion-slide>

<ion-slide>

<h1><img src="assets/imgs/banner2.png"></h1>

</ion-slide>

<ion-slide>

<h1><img src="assets/imgs/banner3.png"></h1>

</ion-slide>

</ion-slides>

  

我们看标签ion-slides上的属性配置 pager loop="true" autoplay="3000"

解析一下

其中标签ion-slides上是属性 page表示轮播图开启显示当前页码,loop="true"表示开启循环播放 autoplay="3000"表示每个3秒钟自动播放一次。

根据我们的需求,按照文档配置属性后,下面就是见证奇迹的时候了。。。轮播图上的小点出现了,也能循环轮播了,并且每个3秒后还会自动轮播--  perfect

然而正当你兴高采烈、自信满满的拿起手机准备向小伙伴们炫耀或者向产品经理邀功的路上一不小心用你那高贵的小金手指滑动了轮播图时。。整个世界突然安静了下来,

What!!怎么不动了?轮播怎么卡翔了?手机突然坏了?不会是出bug了吧?。。不相信的你,于是又借了后端小哥哥的手机看一下。。发现还是一样的问题:可以3秒钟之后自动轮播,也可以循环播放。。

but,当你用手指触摸一下轮播,让它播到下一页后。于是你便在那里小心翼翼的患得患失的默默的数着;’1,2,3,4,5’,这么还不自动播放?再次刷新,重复之前的操作,12345,怎么还是不播放呢。

于是答案肤之欲出:’啊!!出bug了!’。

‘趁着没人发现,赶紧偷偷的改掉’。

于是乎历经千辛万苦的查阅文档,各大论坛求助,终于被你找到了破解之法

首先第一步:想要修改轮播图的问题,你得先找到轮播元素

其次第二步:在合适的时机做针对的事

接下来重点来了,请看代码

在home.ts文件下

1.导入ViewChild ,Slides 并通过@ViewChild匹配到组件 Slides元素

import { Component,ViewChild } from '@angular/core';

import { Slides } from 'ionic-angular';

@ViewChild(Slides) slides: Slides;

2.在ionViewDidEnte生命周期里设置该参数 autoplayDisableOnInteraction 为false

ionViewDidEnter() {

this.slides.autoplayDisableOnInteraction = false;

}

完整home.ts代码

import { Component,ViewChild } from '@angular/core';
import { NavController,Slides } from 'ionic-angular';
import {UserBaseInfoPage} from '../user-base-info/user-base-info'
import {LoginPage} from '../login/login'
import {RestProvider} from '../../providers/rest/rest'
import { Storage } from '@ionic/storage'
// @IonicPage()
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
@ViewChild(Slides) slides: Slides;
constructor(public navCtrl: NavController,
public rest: RestProvider,
public storage: Storage) { }
ionViewWillEnter() {
this.checkToken()
}
ionViewDidEnter() {
//修复轮播手动滑动后不能自动轮播问题
this.slides.autoplayDisableOnInteraction = false;
console.log(this.slides)
}
checkToken () {
var api='Main/MainQuest?needload'; //验证token接口
this.storage.get('token').then((val) => {
var params = {
token: val
}
if (!val) {
this.navCtrl.push(LoginPage);
return
}
this.rest.doPost(api,params, (data)=> { if(!data.issuccess) {
this.navCtrl.setRoot(LoginPage);
}
})
})
} gotoUserInfo() {
this.navCtrl.push(UserBaseInfoPage);
}
}

再次调试一下,,完美。。Over

观看线上效果可以微信关注二维码,通过菜单栏ETC业务进入首页即可观看

ionic3 slides轮播图手动滑动后无法自动播放问题的更多相关文章

  1. Vue中swiper手动滑动后不能自动播放的解决方法

    用户操作swiper之后,是否禁止autoplay.默认为true:停止.如果设置为false,用户操作swiper之后自动切换不会停止,每次都会重新启动autoplay.操作包括触碰,拖动,点击pa ...

  2. photoSlider-html5原生js移动开发轮播图-相册滑动插件

    简单的移动端图片滑动切换浏览插件 分别引用css文件和js文件 如: <link rel="stylesheet" type="text/css" hre ...

  3. Ionic4.x 中的 UI 组件(UI Components) Slides 轮播图组件、Searchbar 组件、 Segment 组件

    Slides 轮播图组件 Ionic4.x 中的轮播图组件是基于 swiper 插件,所以配置 slides 的属性需要在 swiper 的 api 中 找 Swiper Api:http://ida ...

  4. Android侧滑菜单和轮播图之滑动冲突

    接手一个项目,有一个问题需要修改:轮播图不能手动滑动,手动滑动轮播图只会触发侧滑菜单. 猜测:viewpager控件(轮播图)的触摸事件被SlidingMenu控件(侧滑菜单,非第三方项目,乃是上个开 ...

  5. 用 JS 写 (轮播图 / 选项卡 / 滑动门)

    页面中经常会用到各式各样的轮播图,今天贺贺为大家介绍一种常用的方法,对于JS我们需要举一反三,一种方法可以对多个轮播样式进行渲染. <head> <meta charset=&quo ...

  6. Ionic slides 轮播图

    1. 创建界面 <ion-content> <ion-slides pager class="myslides"> <ion-slide> &l ...

  7. swiper框架,实现轮播图等滑动效果

    http://www.swiper.com.cn/ 做个记录而已,这个没什么好说的,对于需要手机端开发实现触摸等方式可以看看.

  8. 探索javascript----我对渐变轮播图的理解

    对于一个没有编程基础的人来说,我时常希望能有人告诉我,当我们看到一个效果的时候,该怎样有条理地分析出它的行为,而我自己有必要加强这方面的 自省,对于一个轮播图我是这样看的,自动播放必然带有一个定时器, ...

  9. 轮播图--js课程

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. Lua中的模块与包

    [前言] 从Lua5.1版本开始,就对模块和包添加了新的支持,可是使用require和module来定义和使用模块和包.require用于使用模块,module用于创建模块.简单的说,一个模块就是一个 ...

  2. 命令操作MySQL数据库

    一.连接MYSQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1. 连接到本机上的MYSQL. 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u roo ...

  3. LuoGu P4996 咕咕咕

    题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...

  4. Java面试题复习笔记(Web方向)

    1.Http中get和post请求的区别? 共同点:都是Http请求方式,用户可以通过不同的请求方式完成对资源(Url)的操作.具体来讲就是get一般用于获取/查询资源信息,post用于更新资源信息. ...

  5. apache 配置反向代理 设置

    1.下载 安装 下载地址:http://httpd.apache.org/download.cgi 将apache 安装到某个目录中 修改conf/http.conf文件 修改配置文件端口  (端口为 ...

  6. Redis 可视化工具:Web Redis Manager

    以前用的:RedisDesktopManager (0.9.3以后需要订阅) https://github.com/uglide/RedisDesktopManager/releases 现在需要订阅 ...

  7. Postman 安装及使用入门教程(我主要使用接口测试)

    1.Postman 安装及使用入门教程(我主要使用接口测试)Postman的English官网:https://www.getpostman.com/chrome插件整理的Postman中文使用教程( ...

  8. Vue中父子组件通讯——组件todolist

    一.todolist功能开发 <div id="root"> <div> <input type="text" v-model=& ...

  9. gflags_static.lib 无法解析的外部符号 __imp__PathMatchSpec

    在用gflags库时生成提示 无法解析的外部符号 __imp__PathMatchSpec   解决办法:Add "shlwapi.lib" to "Project - ...

  10. 在.NET开发中的单元测试工具之(1)——NUnit

    NUnit介绍 NUnit是一个专门针对于.NET来写的单元测试框架,它是xUnit体系中的一员,在xUnit体系中还有针对Java的JUnit和针对C++的CPPUnit,在开始的时候NUnit和x ...