Как сохранить активную вкладку при переходе в другое представление? - PullRequest
0 голосов
/ 31 декабря 2018

Я работаю над проектом Cordova / Ionic 2 / AngularJS и сталкиваюсь со следующей проблемой.Я определил 5 основных вкладок навигации с соответствующими представлениями, но у меня есть одно представление (это содержит iFrame), к которому я хочу перейти с любой из моих основных вкладок, проблема в том, что мне нужно оставить активную выбранную вкладку

Определение моих вкладок выглядит следующим образом:

<ion-tabs ng-controller="BaseTabs as ctrl"
          class="tabs-icon-top tabs-color-active-positive"
          delegate-handle="tabs">

  <ion-tab title="Featured" icon="featured" ng-click="ctrl.openCatalog()"
           ui-sref="tab.app-catalog.featured" on-select="ctrl.update()">
    <ion-nav-view name="tab-app-home"></ion-nav-view>
  </ion-tab>

  <ion-tab title="Catalog" icon="shop" ng-click="ctrl.openCatalogSearch()" 
           ui-sref="tab.app-catalog-search" on-select="ctrl.update()">
    <ion-nav-view name="tab-app-catalog-search"></ion-nav-view>
  </ion-tab>

...

  <ion-tab title="More" icon="more" ng-click="ctrl.openMore()"
           ui-sref="tab.app-more-content" on-select="ctrl.update()">
    <ion-nav-view name="tab-app-user"></ion-nav-view>
  </ion-tab>

</ion-tabs>

в моем контроллере iframe у меня есть следующее:

    $stateProvider.state(
      'tab.app-base-frame', {
        url    : '/base/frame:url',
        parent : 'tab',
        views  : {
          'tab-app-home' : {
            templateUrl  : 'templates/app/base/frame.html',
            controller   : 'BaseFrame',
            controllerAs : 'ctrl'
          }
        },
        params : {
          url   : ''
          title : false
        }
      }
    )

Так как в контроллере у меня установлены представления tab-app-home , каждый раз, когда я открываю представление iframe, я выбираю домашнюю вкладку вместо активной, прежде чем вызывать iframe.

Итак, вот мой вопрос, есть ли способдинамически установить вид на основе параметров?Или, может быть, более практичное решение, чем то, что я делал до сих пор?

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 05 июля 2019

Это решение, которое сработало для меня:

import {Tabs} from “ionic-angular”;

@Page({
    template: <ion-tabs #paymentTabs [tabbarLayout]="tabBarLayout" 
    [selectedIndex]="tabsIndex" preloadTabs="false"> <ion-tab tabIcon="list-box" 
    tabTitle="Tab1" [root]="tab2"></ion-tab> <ion-tab tabIcon="list-box" 
    tabTitle="Tab2" [root]="tab2"></ion-tab> </ion-tabs>,
})
export class PaymentTab {
    @ViewChild(“paymentTabs”) paymentTabs: Tabs;

    constructor() {}

    ngAfterViewInit() {
        setTimeout(() => {
            console.log(“this.paymentTabs”);
            this.paymentTabs.select(1);
        }, 500);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...