离子2:生成后退按钮点击事件

时间:2016-08-11 21:55:03

标签: ionic2

我正在尝试记录用户点击导航栏中生成的后退按钮的操作,但我找不到处理点击事件的方法?

这里的离子导航后退按钮好像不再有用了吗?

6 个答案:

答案 0 :(得分:59)

根据the official Ionic docs,您可以覆盖 NavBar 组件的backButtonClick()方法:

import { ViewChild } from '@angular/core';
import { Navbar } from 'ionic-angular';

@Component({
  selector: 'my-page',
  template: `
    <ion-header>
      <ion-navbar>
        <ion-title>
          MyPage
        </ion-title>
      </ion-navbar>
    </ion-header>

    <ion-content>
    ...
    </ion-content>
   `
})
export class MyPage {
  @ViewChild(Navbar) navBar: Navbar;
  constructor(private navController: NavController){}
  ionViewDidLoad() {
    this.navBar.backButtonClick = (e:UIEvent)=>{
     // todo something
     this.navController.pop();
    }
  }
}

答案 1 :(得分:13)

首先需要将hideBackButton添加到ion-navbar。它将删除默认的后退按钮。

然后添加您自己的按钮,您可以通过点击事件轻松管理该按钮。

代码:

<ion-header>
 <ion-navbar hideBackButton>
    <ion-buttons left>
        <button ion-button (click)="doYourStuff()">
            <ion-icon class="customIcon" name="arrow-back"></ion-icon>
        </button>
    </ion-buttons>
    <ion-title>Page Title</ion-title>
 </ion-navbar>
</ion-header>

doYourStuff()
{
    alert('cowabonga');
    this.navCtrl.pop();  // remember to put this to add the back button behavior
}

最后一件事:Css。

图标将小于通常的后退按钮。如果你想使它类似于Ionic2中使用的默认值,你需要增加它的大小。

.customIcon {

    font-size: 1.7em;
}

答案 2 :(得分:5)

对于自定义默认后退按钮操作,您需要覆盖NavBar组件的backButtonClick()方法。

在“customClass.ts”中导入Navbar组件。创建auxMethod以覆盖默认行为并在ionViewDidLoad方法中调用。

import { Navbar } from 'ionic-angular';

   export class myCustomClass {

   @ViewChild(Navbar) navBar: Navbar;

   ...

   ionViewDidLoad() {
       this.setBackButtonAction()
   }

   //Method to override the default back button action
   setBackButtonAction(){
     this.navBar.backButtonClick = () => {
     //Write here wherever you wanna do
      this.navCtrl.pop()
     }
   }
}

此代码已在离子3中进行了测试。

答案 3 :(得分:1)

如果您也想手动操作:

将此添加到您的page.html

<ion-header>
    <ion-toolbar>
        <ion-buttons start>
            <button (click)="goBack()" royal>
                <ion-icon name="arrow-round-back"></ion-icon>
            </button>
        </ion-buttons>
        <ion-title>Details page</ion-title>
    </ion-toolbar>
</ion-header>

在你的page.ts文件中添加:

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';

@Component({
  templateUrl: 'build/pages/awesome/awesome.html',
})
export class AwesomePage {
  constructor(private navCtrl: NavController) {
  }
  goBack(){
    this.navCtrl.pop();
  }

}

答案 4 :(得分:0)

万一有人在看。 Ionic 3提供生命周期活动。 “ionViewDidLeave”或“ionViewWillLeave”可用于此目的。

查看文档以查看更多活动。 https://ionicframework.com/docs/api/navigation/NavController/

答案 5 :(得分:0)

如果有人在使用

后仍然遇到问题

@ViewChild(Navbar) navBar: Navbar;

尝试this.navbar.backButtonClick放入constructor()

或者,您可以将其放置在ionViewDidLoad()应该可以使用的位置。