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 FF OPERA都可用的弹出层实现代码
Sep 29 Javascript
关于onScroll事件在IE6下每次滚动触发三次bug说明
Sep 21 Javascript
原生JS实现表单checkbook获取已选择的值
Jul 21 Javascript
中止javascript执行的方法
Feb 14 Javascript
快速学习AngularJs HTTP响应拦截器
Dec 31 Javascript
javascript cookie的简单应用
Feb 24 Javascript
Listloading.js移动端上拉下拉刷新组件
Aug 04 Javascript
Vue异步组件使用详解
Apr 08 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
Nov 30 Javascript
微信小程序自定义可滑动日历界面
Dec 28 Javascript
谈一谈vue请求数据放在created好还是mounted里好
Jul 27 Javascript
基于vue的video播放器的实现示例
Feb 19 Vue.js
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
在Windows版的PHP中使用ADO
2006/10/09 PHP
php 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
PHP采集腾讯微博的实现代码
2012/01/19 PHP
php安全之直接用$获取值而不$_GET 字符转义
2012/06/03 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
2016/03/18 PHP
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
2017/05/08 PHP
PHP实现文件上传后台处理脚本
2020/03/04 PHP
JavaScript效率调优经验
2009/06/04 Javascript
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
Node.js + Redis Sorted Set实现任务队列
2016/09/19 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
通过nodejs 服务器读取HTML文件渲染到页面的方法
2018/05/17 NodeJs
angularjs 的数据绑定实现原理
2018/07/02 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
微信小程序实现简易table表格
2020/06/19 Javascript
vue router 通过路由来实现切换头部标题功能
2019/04/24 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
vue中是怎样监听数组变化的
2020/10/24 Javascript
下载给定网页上图片的方法
2014/02/18 Python
详解Python进程间通信之命名管道
2017/08/28 Python
python实现决策树分类算法
2017/12/21 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
python属于解释语言吗
2020/06/11 Python
python3.7调试的实例方法
2020/07/21 Python
几个Shell Script面试题
2012/08/31 面试题
升职自荐书范文
2013/11/28 职场文书
《会变的花树叶》教学反思
2014/02/10 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers