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 相关文章推荐
JQuery浮动DIV提示信息并自动隐藏的代码
Aug 29 Javascript
iframe 父窗口和子窗口相互的调用方法集锦
Dec 15 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
Oct 25 Javascript
两种JS实现屏蔽鼠标右键的方法
Aug 20 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
Oct 22 Javascript
javascript数字验证的实例代码(推荐)
Aug 20 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
Apr 23 Javascript
详解jQuery简单的表单应用
Dec 16 Javascript
angular中的cookie读写方法
Aug 02 Javascript
值得收藏的八个常用的js正则表达式
Oct 19 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
Dec 10 Javascript
vue 实现一个简单的全局调用弹窗案例
Sep 10 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
正则表达式语法
2006/10/09 Javascript
利用PHP实现与ASP Banner组件相似的类
2006/10/09 PHP
基于PHP的cURL快速入门教程 (小偷采集程序)
2011/06/02 PHP
php添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
深入file_get_contents与curl函数的详解
2013/06/25 PHP
php中{}大括号是什么意思
2013/12/01 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
JS实现字体选色板实例代码
2013/11/20 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
js中 计算两个日期间的工作日的简单实例
2016/08/08 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
2016/12/21 Javascript
js转换对象为xml
2017/02/17 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
基于nodejs实现微信支付功能
2017/12/20 NodeJs
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
vue遍历对象中的数组取值示例
2019/11/07 Javascript
javascript实现前端成语点击验证
2020/06/24 Javascript
centos下更新Python版本的步骤
2013/02/12 Python
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
python 命名规范知识点汇总
2020/02/14 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
实习护理工作自我评价
2013/09/25 职场文书
学校招生宣传广告词
2014/03/19 职场文书
服务承诺书
2015/01/19 职场文书
风雨哈佛路观后感
2015/06/03 职场文书
教师节祝酒词
2015/08/11 职场文书