Ionic3新页面去除Tabs的菜单问题总结
问题
要求在【我的】页面,点击【退出登录】按钮,返回到登录页面。
使用 this.navCtrl.setRoot(LoginPage); 或者 this.navCtrl.push(LoginPage); 方法,会导致登录页的下面也变成了Tabs的选项卡,相当于是在Tabs的View中展示了一个新页面

走的弯路
1、修改成使用 modalCtrl.create 的方法,返回了登录页并且没有了Tabs的菜单,但是点击手机自带的返回按钮,还是会返回的内部页面,不符合要求
let modal = this.modalCtrl.create(LoginPage);
modal.present();
2、Tabs类型的,都会有一个app.html 页面,这个页面里只有一句话
<ion-nav [root]="rootPage"></ion-nav>
在app.component.ts 文件里,可以直接这么使用
rootPage: any;
login(){
this.rootPage = LoginPage;
}
如果在退出登录页面,也能这么使用就好了,但事实证明,根本获取不到 rootPage这个对象
3、先把所有页面都pop出去,然后再设置一个root页面
this.navCtrl.popAll();
this.navCtrl.setRoot(LoginPage);
ERROR Error: Uncaught (in promise): navigation stack needs at least one root page
把LoginPage设置为rootPage,尝试仅仅pop()一个页面和尝试popToRoot(),都会报上面这个错
最终解决
在Tabs中注册一个返回登录页得Events事件,通过Events返回首页
tabs.ts 中添加:
constructor(private nav: NavController, private events: Events) {
}
ionViewDidLoad() {
this.listenEvents();
// console.log('界面创建');
}
ionViewWillUnload() {
this.events.unsubscribe('toLogin');
// console.log('界面销毁');
}
listenEvents() {
this.events.subscribe('toLogin', () => {
this.nav.setRoot(LoginPage);
// this.nav.pop(); 使用这种方式也可以,但是会在登录框中默认填上值
// console.log('返回登录');
});
}
点击【退出登录】按钮触发的事件是
logout() {
this.events.publish('toLogin');
}
原创文章,欢迎转载,转载请注明出处
Ionic3新页面去除Tabs的菜单问题总结的更多相关文章
- Ionic3新特性--页面懒加载1
Ionic3新的懒加载机制给我带来了如下新特性: 避免在每一个使用到某Page的Module或其他Page中重复的import这个类(需要写一堆路径) 允许我们通过字符串key在任何想使用的地方获取某 ...
- jquery小效果:新浪游戏右侧导航菜单 (页面效果)
偷盗:新浪游戏右侧导航菜单 http://games.sina.com.cn 效果: 随着页面的滚动,左侧页面的内容,和右侧的导航菜单的按钮文字对应: 点击右侧的导航按钮,左侧页面滚动到相应的内容 2 ...
- [转]来扯点ionic3[2] 页面一线牵 珍惜这段缘
本文转自:https://www.jianshu.com/p/de40aeb3d371 往期传送门 来扯点ionic3[0] 吹完牛再入门也不迟 来扯点ionic3[1] 创建一个新页面 上一 ...
- iOS如何用代码控制以不同屏幕方向打开新页面?
转载:http://blogread.cn/it/article/7765?f=wb#original 代码示例:https://github.com/johnlui/Swift-On-iOS/tre ...
- 来扯点ionic3[3] 页面的生命周期事件,也就是凡间所说的钩子
首先要做一个诚挚的道歉,作为大四狗,因为升学的事情,断更两个月,所以要感谢各位仁慈的读者没有脱粉(好像也就50个粉丝).这一节,我们延续上一节制作的页面,来讨论声明周期钩子的事情. 以我的经验来看,多 ...
- Servlet中以HashMap存放临时变量,解决跳转新页面请求参数过多时浏览器地址栏超长
具体使用方法如下: 1.在跳转之前将需要的参数串encodeURIComponent后作为参数value,UUID作为key一起POST到Servlet保存到HashMap中: 2.在Servlet发 ...
- history.back新页面跳转
今天遇到一个问题,页面跳转失效,原因在于原来在本页面打开的页面现在改为在新页面打开,历史url记录找不到了,所以不能向上一个地址跳转,解决的办法是使用$_SERVER['HTTP_REFERER']获 ...
- PHP弹出提示框并跳转到新页面即重定向到新页面
本文为大家介绍下使用PHP弹出提示框并跳转到新页面,也就是大家所认为的重定向,下面的示例大家可以参考下 这两天写一个demo,需要用到提示并跳转,主要页面要求不高,觉得没必要使用AJAX,JS等, ...
- ajax请求后弹开新页面被浏览器拦截
window.open()我想应该很多人都不陌生吧,它可以实现除用a标签以外来实现打开新窗口! 最近开发项目用到时,却遇到了麻烦,本来好好的弹出窗口,结果被浏览器无情的给拦截了! 代码如下: $.ge ...
随机推荐
- Python-Urllib库详解
官方文档地址:https://docs.python.org/3/library/urllib.html 什么是Urllib: Urllib是python内置的HTTP请求库: urllib.requ ...
- atcoderI - Coins ( 概率DP)
I - Coins Time Limit: 2 sec / Memory Limit: 1024 MB Score : 100100 points Problem Statement Let NN b ...
- 软件工程(FZU2015) 赛季得分榜,第三回合
SE_FZU目录:1 2 3 4 5 6 7 8 9 10 11 12 13 积分规则 积分制: 作业为10分制,练习为3分制:alpha30分: 团队项目分=团队得分+个人贡献分 个人贡献分: 个人 ...
- 认识Debian
Debian -- 通用操作系统https://www.debian.org/ DebianStretch - Debian Wikihttps://wiki.debian.org/DebianStr ...
- mysql 查看版本
查看mysql版本的四种方法 - 风生水起 - 博客园 http://www.cnblogs.com/end/archive/2011/10/18/2216461.html 查看mysql数据库版本方 ...
- CentOS的el5, el6, el7代表什么
https://www.cnblogs.com/EasonJim/p/9051851.html el: enterprise linux?
- 简要了解 MySql 5.5/5.6/5.7/8 出现的新特性
MySQL的开发周期 在比较之前,首先提一下MySQL的开发周期. MySQL一个大版本的开发,大致经历如下几个阶段: Feature Development Feature Testing Perf ...
- Baby-Step-Giant-Step 很酷的算法
Baby-Step-Giant-Step BSGS算法用于解决形如: A ^ x ≡ B ( mod C ) 的问题. 学这个算法前需要具备以下知识:快速幂取模.扩展欧几里 ...
- 批量处理word所有回车行
在WORD中点击CTRL+H,弹出对话框,输入如下替换符
- vue-cli项目开发/生产环境代理实现跨域请求+webpack配置开发/生产环境的接口地址
一.开发环境中跨域 使用 Vue-cli 创建的项目,开发地址是 localhost:8080,需要访问非本机上的接口http://10.1.0.34:8000/queryRole.不同域名之间的访问 ...