Ionic 2 - 如何处理backButton

时间:2016-06-20 07:52:53

标签: angular ionic2 eventemitter

我想在Ionic2中添加一个原生的backButton事件处理程序。问题是Ionic2文档说使用registerBackButtonAction实例的Platform方法,但是没有这样的方法。

而不是registerBackButtonActionbackButton属性为EventEmitter类型(但它不起作用,或者我不知道如何订阅)。

有什么想法吗? 马尔钦

3 个答案:

答案 0 :(得分:1)

你可以使用angular2 routerOnActivate .. location .back()

来处理
     <button danger (click)="navigateBack()">Danger</button>

您的ts文件包含

    // Import    
    import {ComponentInstruction} from '@angular/router-deprecated';

    // Class
    export class ViewImagePge {
    public prev: ComponentInstruction;
    } 

    public routerOnActivate(next: ComponentInstruction, prev: ComponentInstruction): void {
      this.prev = prevInstruction;
    }

    // navigateBack() Function

    public navigateBack(): void {
    if(this.prev && this.prev.routeName === 'Foo') {
          this.location.back();
        } else {

          // can keep default path

          this.router.navigate(['/Foo']);
        }
    }

答案 1 :(得分:1)

我正在处理硬件按钮几天,现在,在离开迈克(来自离子)之后,我知道这是什么问题。

问题是他们没有优先级层次。默认情况下,只有一个操作具有默认优先级值(0),该操作将处理所有操作。

因此,如果您要添加自定义操作,则需要在操作中添加默认代码操作,否则您将覆盖并且不会关闭sidemenu。

我在github上有一个带有后退按钮服务的demo和一个有两页的侧面菜单。在第1页中,我双击退出应用程序,在第2页上默认,在两个页面上我处理侧面菜单而不是显示吐司。

暂时不处理模态,但我想尽快添加它。

希望这可以帮到你。

答案 2 :(得分:0)

您可以使用以下代码。它适用于按下移动设备的后退按钮

platform.registerBackButtonAction(function () {

    if(menu.isOpen())
              {
                menu.close();
              }else
              {
                nav.pop();  
              }          
    }, 100);