我想在Ionic2中添加一个原生的backButton事件处理程序。问题是Ionic2文档说使用registerBackButtonAction
实例的Platform
方法,但是没有这样的方法。
而不是registerBackButtonAction
,backButton
属性为EventEmitter
类型(但它不起作用,或者我不知道如何订阅)。
有什么想法吗? 马尔钦
答案 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);