首页 > 其他 > 详细

Ionic2 ion-tab为活动选项卡添加单击事件

时间:2017-02-26 19:34:49      阅读:3714      评论:0      收藏:0      [点我收藏+]

Ionic2是Hybird开发的神器,组件化程度高且基于AngularJS2,TypeScript作为基础语言,编译特性友好。优点不一而足,但是,也有用起来不方便的地方,或者说是不能满足需求的地方。以ion-tabs为例,处于活动中的ion-tab选项卡是不影响任何点击事件的, 这用起来就尴尬了。

有如下需求:处于APP首页的时候,点击"首页"(ion-tab)导航按钮实现首页的刷新。Ionic2是组件本身是无法实现该需求的,官方也没有明确的说法。

于是乎,通过一种hack的方式,实现了该需求:

 

export class TabsPage {
  tabHome: any = HomePage;  //首页tab
  selectedIndex: number = 0; //当前活动选项卡的index
  tabHomeClickEvent: any; //首页按钮点击事件
  constructor(public navCtrl: NavController, public events: Events) {
    let that = this;
    //定义点击事件
    this.tabHomeClickEvent = function(e) {
      //首页处于活动状态
      if(0 == that.selectedIndex){
         //do some thing     
      }
    }
  }
  // 给ion-tabs添加change事件 - ionic行为
  // <ion-tabs (ionChange)="tabChange($event)"> 
  tabChange(tab: Tab){
    this.selectedIndex = tab.index;
    console.log(this.selectedIndex);
    //活动选项卡索引为0的时候添加相应的click事件,否则删除事件
    if(0 == this.selectedIndex){
      this.tabHomeAddClickEvent();
    }
    else{
      this.tabHomeRemoveClickEvent();
    }
  }


  //ion-md-home 为首页选项卡图标的 ClassName, 通过javascript绑定click事件
  private tabHomeAddClickEvent(): void {

    let that = this;
    let tabHomeIcon = document.getElementsByClassName(‘ion-md-home‘);
    if(tabHomeIcon.length == 1){
      tabHomeIcon[0].addEventListener(‘click‘, that.tabHomeClickEvent, true)
    }

  }

  //ion-md-home 为首页选项卡图标的 ClassName, 通过javascript清除click事件
  private tabHomeRemoveClickEvent(): void {
 
    let that = this;
    let tabHomeIcon = document.getElementsByClassName(‘ion-md-home‘);
    if(tabHomeIcon.length == 1){
      tabHomeIcon[0].removeEventListener(‘click‘,that.tabHomeClickEvent , true);
    }
 
  }  


}

    

用这种方式可以达到给活动的选项卡添加Click时间的目的。

GOOD LUCK!

Ionic2 ion-tab为活动选项卡添加单击事件

原文:http://www.cnblogs.com/mythings/p/6445290.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!