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 相关文章推荐
javascript一个无懈可击的实例化XMLHttpRequest的方法
Oct 13 Javascript
jquery遍历select元素(实例讲解)
Dec 31 Javascript
jQuery $命名冲突解决方案汇总
Nov 13 Javascript
ECMAScript6块级作用域及新变量声明(let)
Jun 12 Javascript
深入学习JavaScript对象
Oct 13 Javascript
基于jQuery倒计时插件实现团购秒杀效果
May 13 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
Oct 25 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
Feb 12 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
Apr 11 Javascript
React Native模块之Permissions权限申请的实例相机
Sep 28 Javascript
AngularJS使用ng-repeat遍历二维数组元素的方法详解
Nov 11 Javascript
Vue.js watch监视属性知识点总结
Nov 11 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
带密匙的php加密解密示例分享
2014/01/29 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
jquery操作select option 的代码小结
2011/06/21 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
全面了解JavaScript对象进阶
2016/07/19 Javascript
Bootstrap缩略图的创建方法
2017/03/22 Javascript
MVVM 双向绑定的实现代码
2018/06/21 Javascript
微信小程序实现简单表格
2019/02/14 Javascript
详解js获取video任意时间的画面截图
2019/04/17 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
Python中的jquery PyQuery库使用小结
2014/05/13 Python
pycharm 使用心得(一)安装和首次使用
2014/06/05 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
2016/06/21 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
pyqt5实现登录界面的模板
2020/05/30 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
Python通过Pillow实现图片对比
2020/04/29 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
大学学习个人的自我评价
2014/02/18 职场文书
《乡愁》教学反思
2014/02/18 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
社保转移委托书范本
2014/10/08 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
《原神》新角色演示“神里绫人:林隐泓洄” 宠妹狂魔
2022/04/03 其他游戏
python 判断字符串当中是否包含字符(str.contain)
2022/06/01 Python
create-react-app开发常用配置教程
2022/06/25 Javascript