【问题标题】:IONIC 2 back button is locked at ion-navbarIONIC 2 后退按钮锁定在 ion-navbar
【发布时间】:2017-12-17 10:51:07
【问题描述】:

我在使用 ionic 2 导航时遇到了一些问题。我有两个页面,交易和交易结果。

这是我的交易页面和 ts 文件。

<ion-header>
  <ion-navbar>
       <button ion-button menuToggle start>
            <ion-icon name="menu"></ion-icon>
          </button>

    <ion-title>Transaction</ion-title>
    <ion-buttons end>
      <button ion-button icon-only color="secondary">
        <ion-icon name="add"></ion-icon>
      </button>
    </ion-buttons>
  </ion-navbar>
</ion-header>

<ion-content padding>
  <ion-card>
    <ion-list>
      <ion-list-header>
         Search Transaction
      </ion-list-header>

        <ion-item>
                <ion-label stacked>Client Name</ion-label>
                <ion-input [(ngModel)]="ClientName" type="text"></ion-input>
        </ion-item>
        <ion-item>
                <ion-label stacked>Transaction No</ion-label>
                <ion-input [(ngModel)]="TransactionNo" type="text"></ion-input>
        </ion-item>
        <ion-item>
                <ion-label stacked>Status</ion-label>
                <ion-select [(ngModel)]="StatusTr">
                  <ion-option value="{{st}}" *ngFor="let st of StatusArray">{{st}}</ion-option>                 
                </ion-select>
        </ion-item>
        <ion-item>
                <ion-label stacked>Invoice</ion-label>
                <ion-select [(ngModel)]="Invoice">
                  <ion-option value="{{Inv}}" *ngFor="let Inv of InvoiceArray">{{Inv}}</ion-option>                 
                </ion-select>
        </ion-item>
        <ion-item>
            <div item-content item-left>
               <div item-content item-left>Transaction Date</div>
                <ion-label stacked>From Date</ion-label>
                <ion-datetime displayFormat="DD/MMM/YYYY"  min="2013" max="2020-12-31"[(ngModel)]="transferDate"></ion-datetime>
            </div> 
        </ion-item>
        <ion-item>
            <div item-content item-left>
               <ion-label stacked>To Date</ion-label>
                <ion-datetime displayFormat="DD/MMM/YYYY"  min="2013" max="2020-12-31"[(ngModel)]="transferDateTo"></ion-datetime>
            </div>
        </ion-item>
        <ion-item>
            <button ion-button block color="royal" (click)="searchTrans()" >
              Search
            </button>
        </ion-item>
    </ion-list>
  </ion-card>
</ion-content>

以下是导航到另一个页面的打字稿函数,称为交易结果,称为searchTrans()。

import { Component } from '@angular/core';
import { NavController,MenuController } from 'ionic-angular';
import {ShareService} from '../../share/ShareService';
import {transCrit} from '../../viewmodel/transCrit';
import {TransResult} from '../trans-result/trans-result';

@Component({
  selector: 'page-transaction',
  templateUrl: 'transaction.html'
})
export class Transaction {

  ClientName:string;
  TransactionNo:string;
  StatusTr:string;
  Invoice:string;
  transferDate:string;
  transferDateTo:string;

  StatusArray:string[];
  InvoiceArray:string[];
  passerVM:transCrit;

  constructor(public navCtrl: NavController,public menu:MenuController,private shareServe:ShareService) {
     this.menu.swipeEnable(true);

     this.StatusArray = ["Successful","Submit","Reject","Draft","Delete","Archive"];
     this.InvoiceArray =["All","Invoice Issued","Not Invoice"];

     this.ClientName = "";
     this.TransactionNo = "";
     this.StatusTr = "";
     this.Invoice = "";
     this.transferDate = this.todayDate(this.transferDate);
     this.transferDateTo = this.todayDate(this.transferDateTo);    

  }

  ionViewDidLoad() {
    console.log('Hello Transaction Page');
  }

  todayDate(datetoDay :string) {
      let utc = new Date().toJSON().slice(0,10);
      if (datetoDay === undefined ){
        return utc;
      }
  }

  searchTrans(){
      this.passerVM = new transCrit(this.ClientName,this.Invoice,this.StatusTr,this.TransactionNo,this.transferDate,this.transferDateTo);

      this.navCtrl.push(TransResult, {mdlPasser : this.passerVM});
  }

}

这是我的交易结果页面

<ion-header>
  <ion-navbar>

    <ion-title>trans-result</ion-title>

  </ion-navbar>
</ion-header>

<ion-content padding>

</ion-content>

这是交易结果页面的打字稿文件

import { Component } from '@angular/core';
import { NavController, NavParams, ViewController,MenuController } from 'ionic-angular';

@Component({
  selector: 'page-trans-result',
  templateUrl: 'trans-result.html'
})
export class TransResult {

  constructor(public navCtrl: NavController,private navParams: NavParams, private viewCtrl:ViewController, private menu:MenuController) {
      this.menu.swipeEnable(false);
  }

  goBack(){
    this.navCtrl.pop();
  }

  ionViewDidLoad() {
     console.log(this.navCtrl.canGoBack());
     console.log(this.navParams.get('mdlPasser'));
  }

}

我的问题是我可以在交易结果页面中看到返回按钮。它由 ionic 2 框架自动添加。但这个按钮被锁定,完全无法点击。有没有办法让后退按钮活着。

最佳 Rgds, 青蛙

【问题讨论】:

  • 只是检查一下,您的交易页面是否已经设置为root?
  • 你好慧婷,是的,这是导航到交易页面的代码。 LeadToTransaction(){ this.navCtrl.setRoot(Transaction); }
  • 如果可以,能否提供Transaction的源代码?因为到目前为止您的代码看起来还不错。我看到的唯一区别是 templateUrl,即 html 的路径。从我使用的和我在 Ionic 教程中看到的来看,他们使用的是 templateUrl:'build/pages/list/list.html'。不确定这是否会影响
  • 事务中的菜单按钮有效吗?或者尝试推送事务而不是设置 root 并查看后退按钮是否有效?我已经尝试了您的部分代码,它们在我的项目上运行良好。
  • 是的,事务中的菜单按钮工作正常。

标签: cordova angular ionic2


【解决方案1】:

调试它,在您的 home.scsstrans-result.scss 中设置(都是全局定义的,而不是页面范围 btw)

ion-title{
  position: absolute;
  top: 0;
  left: 0;
  padding: 0 90px 1px;
  width: 100%;
  height: 100%;
  text-align: center;
}

这使得ion-title '覆盖'后退按钮。这样,当您单击它时,您单击的是标题而不是返回按钮。

将您的样式减少到:

ion-title{
  margin-left: -12%;
  text-align: center;
}

保持标题看起来完全相同,并且后退按钮有效。

【讨论】:

  • 我遇到了类似的问题,我将元素的类设置为“标签”并进行了一些更改,这些更改以某种方式影响了大多数离子组件。这有助于解决问题,谢谢!
【解决方案2】:

添加hideBackButton="true"

<ion-header hideBackButton="true">
    <ion-navbar>
        <ion-title>trans-result</ion-title>
    </ion-navbar>
</ion-header>

【讨论】:

    猜你喜欢
    • 2019-07-28
    • 2016-08-20
    • 1970-01-01
    • 2017-04-22
    • 2017-06-20
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多