ionic3顶部tabs点击切换功能

20 篇文章 0 订阅
5 篇文章 0 订阅

1、新建项目,ionic start demo tabs ,选择在Home页面做这个功能
2、在home.html页面:

<ion-header>
  <ion-navbar>
    <ion-title>Home</ion-title>
  </ion-navbar>
</ion-header>

<ion-content>
    <div class="normal-page">
        <div class='segment-box'>
            <ion-slides class="slide-title" [slidesPerView]="pageNumber" [pager]="false">
                <ion-slide *ngFor="let slide of slides; let i = index;">
                    <div (click)="onClick(i)">
                        <span class="slide-title-unit"
                            [ngClass]="{'slide-title-active': selectedIndex == i}">{{slide}}</span>
                    </div>
                </ion-slide>
            </ion-slides>
            <div class="switch-box" [ngSwitch]="selectedIndex">
                <ion-list *ngSwitchCase="0">
                  页面1
                </ion-list>
                <ion-list *ngSwitchCase="1">
                  页面2
                </ion-list>
            </div>
        </div>
    </div>
</ion-content>

home.ts文件中:

import { Component, Input, Output, EventEmitter } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {
  @Input("slides") slides: string[] = [];
  @Input("pageNumber") pageNumber: number = 2;
  @Output("slideClick") slideClick = new EventEmitter<number>();

  mySlideOptions;
  selectedIndex: number = 0;
  constructor(public navCtrl: NavController, public navParams: NavParams) {
  }
  ngOnInit() {
    this.mySlideOptions = {
      loop: false,
      autoplay: false,
      initialSlide: 0,
      pager: false,
      slidesPerView: this.pageNumber,
      paginationHide: true,
      paginationClickable: true
    }
    this.slides = ['页面1', '页面2']
  }
  onClick(index) {
    this.selectedIndex = index;
    this.slideClick.emit(index);
  }
}

home.scss中:

import { Component, Input, Output, EventEmitter } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {
  @Input("slides") slides: string[] = [];
  @Input("pageNumber") pageNumber: number = 2;
  @Output("slideClick") slideClick = new EventEmitter<number>();

  mySlideOptions;
  selectedIndex: number = 0;
  constructor(public navCtrl: NavController, public navParams: NavParams) {
  }
  ngOnInit() {
    this.mySlideOptions = {
      loop: false,
      autoplay: false,
      initialSlide: 0,
      pager: false,
      slidesPerView: this.pageNumber,
      paginationHide: true,
      paginationClickable: true
    }
    this.slides = ['页面1', '页面2']
  }
  onClick(index) {
    this.selectedIndex = index;
    this.slideClick.emit(index);
  }
}

最终展示的效果如图:
在这里插入图片描述
全部代码在码云: https://gitee.com/weijunw/ionic3Demo/tree/master/demo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值