【问题标题】:Ionic 2 - how to handle backButtonIonic 2 - 如何处理返回按钮
【发布时间】:2016-06-20 07:52:52
【问题描述】:
我想在 Ionic2 中添加本机 backButton 事件处理程序。问题是 Ionic2 文档说要使用 Platform 实例的 registerBackButtonAction 方法,但没有这样的方法。
而不是registerBackButtonAction,有backButton 属性,它是EventEmitter 类型(但它不起作用,或者我不知道如何订阅)。
有什么想法吗?
马辛
【问题讨论】:
标签:
angular
ionic2
eventemitter
【解决方案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']);
}
}
【解决方案2】:
几天前我一直在处理硬件后退按钮,现在,在使用 mike(来自 ionic)之后,我知道出了什么问题。
问题是他们没有优先级层次结构。默认情况下,只有一个具有默认优先级值 (0) 的操作,并且该操作处理所有事情。
因此,如果您想添加自定义操作,则需要在您的操作中添加默认代码操作,否则您将被覆盖并且不会关闭侧边菜单。
我在 github 上有一个 demo,带有一个后退按钮服务和一个带有两页的侧边菜单。在第 1 页中,我双击退出应用程序,在第 2 页上是默认设置,在两个页面上,我都处理侧菜单关闭而不是显示 toast。
暂时不处理模态,但我想尽快添加它。
希望对你有帮助。
【解决方案3】:
您可以使用以下代码。它适用于按下移动设备的后退按钮
platform.registerBackButtonAction(function () {
if(menu.isOpen())
{
menu.close();
}else
{
nav.pop();
}
}, 100);