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 相关文章推荐
MooTools 1.2介绍
Sep 14 Javascript
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
Jun 19 Javascript
javascript记录文本框内文字个数检测文字个数变化
Oct 14 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
Mar 16 Javascript
Jquery中巧用Ajax的beforeSend方法
Jan 20 Javascript
jQuery实现调整表格单列顺序完整实例
Jun 20 Javascript
bootstrap读书笔记之CSS组件(上)
Oct 17 Javascript
vue-hook-form使用详解
Apr 07 Javascript
jQuery实现用户信息表格的添加和删除功能
Sep 12 jQuery
vue环形进度条组件实例应用
Oct 10 Javascript
详解JWT token心得与使用实例
Aug 02 Javascript
webpack HappyPack实战详解
Oct 08 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
ASP知识讲座四
2006/10/09 PHP
PHP无刷新上传文件实现代码
2011/09/19 PHP
str_replace只替换一次字符串的方法
2013/04/09 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
PHP中list方法用法示例
2016/12/01 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
别了 JavaScript中的isXX系列
2012/08/01 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
2016/09/04 Javascript
整理关于Bootstrap排版的慕课笔记
2017/03/29 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
python的dict,set,list,tuple应用详解
2014/07/24 Python
python语言使用技巧分享
2016/05/31 Python
python对象及面向对象技术详解
2016/07/19 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
Python爬虫之网页图片抓取的方法
2018/07/16 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
python 爬虫爬取京东ps4售卖情况
2020/12/18 Python
韩国三星旗下的一家超市连锁店:Home Plus
2016/07/30 全球购物
Born鞋子官网:Born Shoes
2017/04/06 全球购物
C语言中break与continue的区别
2012/07/12 面试题
数学教学随笔感言
2014/02/17 职场文书
转让协议书范本
2014/09/13 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
学习心理学的体会
2014/11/07 职场文书
自我检讨报告
2015/01/28 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书
初中班级口号霸气押韵
2015/12/24 职场文书