ionic3双击返回退出应用的方法


Posted in Javascript onSeptember 17, 2019

ionic3 做双击退出应用的时候按照网上大神的来,从中遇到了一些问题,用this.app.getRootNav().push(MyPage);跳转的页面无法返回,this.app.getActiveNav().pop();这个方法在新的版本中已近被移除了,最后使用另外一种返回方式this.appCtrl.getRootNav().pop();

完整代码:

1.tabs.ts文件

import {Component, ViewChild} from '@angular/core';
 
import { AboutPage } from '../about/about';
import { ContactPage } from '../contact/contact';
import { HomePage } from '../home/home';
import { MyPage } from '../my/my';
import {Tabs} from "ionic-angular";
 
@Component({
 templateUrl: 'tabs.html'
})
export class TabsPage {
 tab1Root = HomePage;
 tab2Root = AboutPage;
 tab3Root = ContactPage;
 tab4Root = MyPage;
 @ViewChild('mainTabs') tabs:Tabs;
 constructor() {
 
 }
}

2.tabs.html文件

<ion-tabs #mainTabs>
 <ion-tab [root]="tab1Root" tabTitle="定位" tabIcon="ios-pin-outline" ></ion-tab>
 <ion-tab [root]="tab2Root" tabTitle="运输管理" tabIcon="ios-paper-outline"></ion-tab>
 <ion-tab [root]="tab3Root" tabTitle="账单管理" tabIcon="logo-yen"></ion-tab>
 <ion-tab [root]="tab4Root" tabTitle="我的" tabIcon="ios-contact-outline"></ion-tab>
</ion-tabs>

3.app.component.ts文件

import {Component, ViewChild} from '@angular/core';
import {Nav, Platform, ToastController,App} from 'ionic-angular';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { Login } from '../pages/login/login';
import { TabsPage } from '../pages/tabs/tabs';
 
@Component({
 templateUrl: 'app.html'
})
export class MyApp {
 rootPage:any;
 public backButtonPressed: boolean = false;
 @ViewChild("myNav") nav: Nav;
 constructor(public platform: Platform,statusBar: StatusBar, splashScreen: SplashScreen,
       public toastCtrl: ToastController,public appCtrl:App) {
  platform.ready().then(() => {
   this.exitApp();
  });
 }
 
 exitApp() {
  this.platform.registerBackButtonAction(() => {
   //控制modal、系统自带提示框
   let overlay = this.appCtrl._appRoot._overlayPortal.getActive() ||  this.appCtrl._appRoot._modalPortal.getActive();
   if (overlay) {
    overlay.dismiss();
    return;
   }
   let activeVC = this.nav.getActive();
   let page = activeVC.instance;
   if (page.tabs) {
    let activeNav = page.tabs.getSelected();
    if (activeNav.canGoBack()) {
     return activeNav.pop();
    } else {
     return this.showExit();
    }
   }
   if (page instanceof Login) {//查看当前页面是否是登陆页面
    this.showExit();
    return;
   }
   this.appCtrl.getRootNav().pop();//剩余的情况返回操作
  });
 }
 
 //双击退出函数
 showExit() {
  if (this.backButtonPressed) {
   this.platform.exitApp();
  } else {
   this.presentToast();//再按一次退出
   this.backButtonPressed = true;
   setTimeout(() => {
    this.backButtonPressed = false;
   }, 2000)
  }
 }
 presentToast() {
  let toast = this.toastCtrl.create({
   message: '再按一次退出应用',
   duration: 2000,
   position: 'top',
  });
  toast.onDidDismiss(() => {
   console.log('Dismissed toast');
  });
  toast.present();
 }
}

4.app.html文件

<ion-nav #myNav [root]="rootPage"></ion-nav>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE不出现Flash激活框的小发现的js实现方法
Sep 07 Javascript
JS提交并解析后台返回的XML的代码
Nov 03 Javascript
JavaScript中的this到底是什么(一)
Dec 09 Javascript
KnockoutJS 3.X API 第四章之click绑定
Oct 10 Javascript
Angular.js中ng-include用法及多标签页面的实现方式详解
May 07 Javascript
JS点击缩略图整屏居中放大图片效果
Jul 04 Javascript
使用JS编写的随机抽取号码的小程序
Aug 11 Javascript
基于vue2实现左滑删除功能
Nov 28 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
Oct 29 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
Nov 02 Javascript
浅谈vux之x-input使用以及源码解读
Nov 04 Javascript
Vue 处理表单input单行文本框的实例代码
May 09 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
Sep 17 #Javascript
vue.js购物车添加商品组件的方法
Sep 17 #Javascript
关于vue项目中搜索节流的实现代码
Sep 17 #Javascript
Vue的生命周期操作示例
Sep 17 #Javascript
小程序两种滚动公告栏的实现方法
Sep 17 #Javascript
Vue Extends 扩展选项用法完整实例
Sep 17 #Javascript
react native 仿微信聊天室实例代码
Sep 17 #Javascript
You might like
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
PHP-redis中文文档介绍
2013/02/07 PHP
解析PHP中常见的mongodb查询操作
2013/06/20 PHP
php中的strpos使用示例
2014/02/27 PHP
php jsonp单引号转义
2014/11/23 PHP
PHP执行linux命令常用函数汇总
2016/02/02 PHP
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
慎用 somefunction.prototype 分析
2009/06/02 Javascript
JS 显示当前日期与时间的代码
2010/03/24 Javascript
自制轻量级仿jQuery.boxy对话框插件代码
2010/10/26 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
jquery五角星评分插件示例分享
2014/02/21 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
jquery对象和DOM对象的相互转换详解
2016/10/18 Javascript
初探JavaScript 面向对象(推荐)
2017/09/03 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
React数据传递之组件内部通信的方法
2017/12/31 Javascript
超出JavaScript安全整数限制的数字计算BigInt详解
2018/06/24 Javascript
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
微信小程序如何使用globalData的方法
2019/06/06 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
python 集合 并集、交集 Series list set 转换的实例
2018/05/29 Python
python实现计算器功能
2019/10/31 Python
python基于property()函数定义属性
2020/01/22 Python
python代码能做成软件吗
2020/07/24 Python
html5 http的轮询和Websocket原理
2018/10/19 HTML / CSS
Homestay中文官网:全球寄宿家庭
2018/10/18 全球购物
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
竞选班干部演讲稿
2014/04/24 职场文书
会计实训报告范文
2014/11/04 职场文书
优秀班组事迹材料
2014/12/24 职场文书
员工离职证明范本
2015/06/12 职场文书
python 如何执行控制台命令与操作剪切板
2021/05/20 Python