我正在开发一个Ionic2应用程序。我对registerBackButtonAction
功能感到困惑。
我已经在一个页面上完成了这个(比如页面A(。 并且它按预期工作。
this.platform.registerBackButtonAction(() => {
console.log("back presed");
this.abortDownloadAndExit();
});
现在我想在其他页面上registerBackButtonAction
(例如PageB(上执行其他操作。但是Ionic正在从页面A采取行动
如何在不同的页面上注册不同的活动。
正如你在 Ionic 文档中看到的registerBackButtonAction
返回一个函数:
一个函数,在调用时,将注销其后退按钮操作。因此,您可以使用该函数在离开页面时恢复默认行为,如下所示:
import { Component} from '@angular/core';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
// Property used to store the callback of the event handler to unsubscribe to it when leaving this page
public unregisterBackButtonAction: any;
constructor(...) { ... }
ionViewDidEnter() {
this.initializeBackButtonCustomHandler();
}
ionViewWillLeave() {
// Unregister the custom back button action for this page
this.unregisterBackButtonAction && this.unregisterBackButtonAction();
}
public initializeBackButtonCustomHandler(): void {
this.unregisterBackButtonAction = this.platform.registerBackButtonAction(() => {
this.customHandleBackButton();
}, 10);
}
private customHandleBackButton(): void {
// do what you need to do here ...
}
}
如您所见,关键是存储 registerBackButtonAction
方法的回调,并在稍后离开页面时(或想要恢复默认行为时(使用它:
this.unregisterBackButtonAction = this.platform.registerBackButtonAction(() => {
this.customHandleBackButton();
}, 10);