Ionic的页面堆栈与Tabs菜单相遇的问题(页面堆栈有多个)
本来的需求:
新建的Ionic项目是Tabs菜单,假设有两个选项卡 A 和 B(从左到右),对应的两个页面的代码完全一样,使用了echarts 插件,并且使用了一个获取页面元素的方法,给自己的一个变量赋值,然后将echarts图写入到这个元素里面。
html中
<div id="chartContainer"></div>
ts中
this.chartContainer = document.getElementById('chartContainer');
这样导致的效果是:
两个页面上的echarts图,在A 页面切换到B 选项卡的时候,A 能展示,B 为空白;若先打开B页面, B页面能展示echarts图,切换到A页面,A页面也能展示echarts图,但是再返回B页面,B页面就不能显示echarts了。
最后当我把其中一个的id更改了以后,就没有这个问题了。
我的理解是:
Tabs菜单有两个,对应的页面堆栈就有两个,这两个页面堆栈还有优先级,跟tabs.ts 中代码的顺序有关。
A 切换到B ,A 能展示,B 为空白:当我打开了A 页面,栈区里记录了A 页面的元素 <div id="chartContainer"></div> 。当我再打开B 页面的时候,A 页面并没有被销毁,它在栈区的变量也就没有移出去。此时再打开B 页面,通过document.getElementById('chartContainer'); 获取到的元素,仍然是A 页面中的元素。所以B 页面才会是空白的。
B切换到A,还是A展示,B不能展示:是因为要优先读取A栈区中的值。
证明:
1、验证页面堆栈就有多个,在A和B两个页面,分别添加一段代码,跳转到根页面,看一看是否是同一个页面。
在两个页面中都添加同样的一段代码:
html中
<button (click)="f()">测试</button>
ts中
f(){
this.navCtrl.popToRoot();
}
结果:分别跳转回了对应的Tabs 菜单的首页。
2、验证页面堆栈有优先级,跟tabs.ts 中代码的顺序有关
将tabs.ts 文件中的两行代码换下顺序,看一看结果是否会颠倒。
原来的代码是:
<ion-tabs>
<ion-tab [root]="tab1Root" tabTitle="A"></ion-tab>
<ion-tab [root]="tab2Root" tabTitle="B"></ion-tab>
</ion-tabs>
更改后为:
<ion-tabs>
<ion-tab [root]="tab2Root" tabTitle="B"></ion-tab>
<ion-tab [root]="tab1Root" tabTitle="A"></ion-tab>
</ion-tabs>
结果:B 切换到A ,B 能展示,A 为空白;A切换到B,还是B展示,A不能展示,确实颠倒了。
我觉得我的理解是正确的,如有不对,请指正!
原创文章,欢迎转载,转载请注明出处!
Ionic的页面堆栈与Tabs菜单相遇的问题(页面堆栈有多个)的更多相关文章
- 关于easyUI 的tabs 在子页面增加显示tabs的一个问题
在父页面点个链接能动态看到子页面的情况太简单,请看easyUI官网:http://www.jeasyui.com/tutorial/layout/tabs2.php现在说的是在子页面点个按钮也能触发增 ...
- 关于easyUI在子页面增加显示tabs的一个问题
在父页面点个链接能动态看到子页面的情况太简单,请看easyUI官网:http://www.jeasyui.com/tutorial/layout/tabs2.php 现在说的是在子页面点个按钮也能触发 ...
- Page Scroll Menu (页面中锚点菜单)
Technorati 标签: Page Scroll Menu,页面锚点菜单,Menu,Too Long,页面太长 当页面太长时,会导致浏览不便,这时就需要一个页面锚点菜单(Page Scroll ...
- 【BUG】---ionic tab-demo项目在modal页跳转URL改变页面不刷新,手动刷新后显示空白
问题描述: 项目是基于ionic tab的demo,在modal上访问其他页面,地址栏变化了,但是页面不动没刷新,自己手动刷新呢,还是空白,可是访问的页面时有内容的啊 错误: 我的路由配置 .stat ...
- ionic3之自定义tabs菜单图标
请参考以下链接 ionic3之自定义tabs菜单图标
- asp页面快速找到菜单按钮转向的页面的方法
asp页面快速找到菜单按钮转向的页面的方法: 鼠标放在按钮上,右键属性即可查看
- EasyUI-子页面增加显示tabs的一个问题
在父页面点个链接能动态看到子页面的情况太简单,请看easyUI官网:http://www.jeasyui.com/tutorial/layout/tabs2.php现在说的是在子页面点个按钮也能触发增 ...
- js-禁止微信H5页面点击右上角菜单时出现“复制链接”,且分享仅支持微信分享
禁止微信H5页面点击右上角菜单时出现“复制链接”,这个问题已经影响到我很久很久了,起码有2年了, 昨天写H5活动的时候,需求有一个是:可分享,但是禁止复制活动链接, 这一下,就逼我务必好好研究研究了. ...
- 前端开发工程师 - 04.页面架构 - CSS Reset & 布局解决方案 & 响应式 & 页面优化 &规范与模块化
04.页面架构 第1章--CSS Reset 第2章--布局解决方案 居中布局 课堂交流区 水平列表的底部对齐 如图所示,一个水平排列的列表,每项高度都未知,但要求底部对齐,有哪些方法可以解决呢? & ...
随机推荐
- Centos7修改系统时区
timedatectl status Local time: 四 2014-12-25 10:52:10 CST Universal time: 四 2014-12-25 02:52:10 UTC R ...
- 基于 Token 的身份验证:JSON Web Token(附:Node.js 项目)
最近了解下基于 Token 的身份验证,跟大伙分享下.很多大型网站也都在用,比如 Facebook,Twitter,Google+,Github 等等,比起传统的身份验证方法,Token 扩展性更强, ...
- 抓包工具Charles的使用心得
简介 Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的.该软件是用Java写的,能够在Windows,Mac,Linux上使用.开发iOS都在 ...
- 便于记忆的SA构造
首先学习基数排序. memset(b, 0, sizeof(b)); for(int i = 0; i < n; i++) b[a[i]]++; for(int i = 1; i <= m ...
- oc之证书
https://www.cnblogs.com/MrJalen/p/6813309.html iOS推送证书生成pem文件(详细步骤) 1.pem文件概述 pem文件是服务器向苹果服务器做推送时候 ...
- 未能加载文件或程序集"Newtonsoft.Json, Version=4.5.0.0
这问题遇到好几次了,重新更改了引用都不好使,有的时候版本改成一致就好了,但是有的地方你不知道在哪里用了就不好排查,所性在config里面加个配置让程序运行的时候去处理得了~ 很实用,放在configu ...
- SQL UPDATE with INNER JOIN
mysql - SQL UPDATE with INNER JOIN - Stack Overflowhttps://stackoverflow.com/questions/14491042/sql- ...
- php7函数,声明,返回值等新特性介绍
使用 ... 运算符定义变长参数函数 (PHP 5 >= 5.6.0, PHP 7) 现在可以不依赖 func_get_args(), 使用 ... 运算符 来实现 变长参数函数. functi ...
- Python 中关于 round 函数的小坑
参考: http://www.runoob.com/w3cnote/python-round-func-note.html
- k8s容器的资源限制
1.k8s支持内存和cpu的限制 requests:容器运行需求,最低保障limits:限制,硬限制(资源上限) CPU: 1颗逻辑CPU(1核CPU=4个逻辑CPU) 1物理核=1000个微核(mi ...