【问题标题】:Can I change the ionic tabs root directory by dynamically?我可以动态更改离子标签根目录吗?
【发布时间】:2018-07-13 04:20:09
【问题描述】:

点击仪表板时如何更改离子标签根页面?

这是我的 Tabs.ts

import { Component } from '@angular/core';
import { DashBoardPage } from '../dash-board/dash-board';
import { TrainingPage } from '../training/training';
import { ArchivePage } from '../archive/archive';
import { HomePage } from '../home/home';
import { DataProvider } from '../../providers/data/data';
import { Observable } from 'rxjs/Observable';



@Component({
  templateUrl: 'tabs.html'
})
export class TabsPage {

  // tabIndex: Observable<[Number]>;

  dashBoard = DashBoardPage;
  training = TrainingPage;
  archive = ArchivePage;
  home = HomePage;
  constructor(public data: DataProvider) {
    // this.tabIndex = this.data.tabIndex;
  }
}

tabs.html

<super-tabs selectedTabIndex="{{ tabIndex }}" indicatorColor="dark" [config]="{ sideMenu: 'left', allowElementScroll: 'true' }" tabsPlacement= "bottom">
  <super-tab [root]="home" id="home"  icon="home"></super-tab>
  <super-tab [root]="dashBoard" id="dashBoard" icon="albums"></super-tab>
  <super-tab [root]="training" id="training" icon="information-circle" ></super-tab>
  <super-tab [root]="archive" id="archive" icon="contacts"></super-tab>
</super-tabs>

这是我的 home.ts 文件

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams, App } from 'ionic-angular';
import { DashBoardPage } from '../dash-board/dash-board';
import { TrainingPage } from '../training/training';
import { ArchivePage } from '../archive/archive';
import { Storage } from '@ionic/storage';
import { TabsPage } from '../tabs/tabs';
import { DataProvider } from '../../providers/data/data';


@IonicPage()
@Component({
  selector: 'page-home',
  templateUrl: 'home.html',
})
export class HomePage {
  token: any;
  isLogIn: boolean;
  tabIndex: number ;
  constructor(public data:DataProvider , public appCtrl: App, public storage: Storage,public navCtrl: NavController, public navParams: NavParams) {
    this.isLogIn = true;
  }



  }

  dashBoard() {
    this.navCtrl.push(DashBoardPage, this.token);
    this.storage.set('tabIndex', 1);

  }

  training() {
    this.navCtrl.push(TrainingPage, this.token);
  }

  archive() {
    this.navCtrl.push(ArchivePage, this.token);
  }


}

这是我的家.html

<ion-header>

    <ion-navbar>
    <ion-toolbar>

          <button item-start class="menu" ion-button="ion-button" icon-only="icon-only" menuToggle>
            <ion-icon style="color: white;" name="menu"></ion-icon>
        </button>
        <!--
        <img item-end style="width: 100px;" src="assets/imgs/ulogo2.png" alt="">
        -->

    </ion-toolbar>


    </ion-navbar>


</ion-header>
<ion-content padding>
  <br> <br>
  <ion-card (click)="dashBoard()" >
      <ion-item>
        <ion-thumbnail item-start>
          <img src="assets/imgs/das.png">
        </ion-thumbnail>
        <h1>DashBoard</h1>
      </ion-item>
  </ion-card>

  <ion-card (click)="training()">
      <ion-item>
        <ion-thumbnail item-start>
          <img src="assets/imgs/training.png">
        </ion-thumbnail>
        <h1>Training</h1>
      </ion-item>
  </ion-card>

  <ion-card (click)="archive()">
    <ion-item>
      <ion-thumbnail item-start>
        <img src="assets/imgs/archive.png">
      </ion-thumbnail>
      <h1>Archive</h1>
    </ion-item>
  </ion-card>

</ion-content>

当我从 home.html 单击仪表板时,我想更改选项卡根,它会将选项卡根更改为仪表板页面并选择仪表板。如果按新闻培训,它将更改为培训页面,并将标签根更改为培训页面并选择。

【问题讨论】:

标签: javascript ionic-framework ionic2 ionic3


【解决方案1】:

我只能看到一种方法,它是将根设置为您想要的页面。

 dashBoard() {
    this.navCtrl.setRoot(DashBoardPage, this.token);
  }

【讨论】:

    【解决方案2】:

    是的,你可以在 tabs.html 中

    <ion-tabs selectedIndex={{tabIndex}}>
    

    在您的 tabs.ts 文件中

    export class TabsPage {
    
      // tabIndex: Observable<[Number]>;
    
      dashBoard = DashBoardPage;
      training = TrainingPage;
      archive = ArchivePage;
      home = HomePage;
      constructor(public data: DataProvider) {
        this.tabIndex = 1;
      }
    }
    

    以其他方式代替使用this.navCtrl.push(TrainingPage, this.token); 使用this.navCtrl.select("1", this.token);

    【讨论】:

    • 感谢您的回复。但这是另一个称为主页的页面。这个仪表板是按钮是主页的组件。我想从这里改变
    • 我没有在代码中看到你的页脚部分我不明白你在哪里给出了你在代码中提到的标签图标
    • 再次更新了我的问题,这次我添加了tabs.html
    猜你喜欢
    • 2018-06-26
    • 2020-08-05
    • 2023-04-08
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 2017-12-20
    • 1970-01-01
    相关资源
    最近更新 更多