Ionic2 ion-tab爲活動選項卡添加單擊事件

Ionic2是Hybird開發的神器,組件化程度高且基於AngularJS2,TypeScript做爲基礎語言,編譯特性友好。優勢不一而足,可是,也有用起來不方便的地方,或者說是不能知足需求的地方。以ion-tabs爲例,處於活動中的ion-tab選項卡是不響應任何點擊事件的, 這用起來就尷尬了。javascript

有以下需求:處於APP首頁的時候,點擊"首頁"(ion-tab)導航按鈕實現首頁的刷新。Ionic2是組件自己是沒法實現該需求的,官方也沒有明確的說法。java

因而乎,經過一種hack的方式,實現了該需求:ionic

 

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!this

相關文章
相關標籤/搜索