使用AF3开发应用,发现有一个bug,在同一个view下面的不同页面切换后,这时候切换到别的view中的页面,然后再切换到上一个view下的页面,此时只要目标不是刚才前一个view中的最后显示页面就会出问题,因为此时只显示最后的页面!

调试后发现是由于最后的活动页面的active类没有被移除,我希望找到合适的事件来自己执行这个任务。因此跟踪了view和panel的事件。下面是我记录的AF3下 panel组件的切换过程触发的事件记录。

  1. //### 过程1:viewHome.pageHome --> viewLogin.page_login
  2. ****************** page_login panelbeforeload
  3. ****************** viewLogin panelbeforeload
  4. ****************** page_login panelbeforeunload
  5. ****************** viewLogin panelbeforeunload
  6. ****************** viewHome panelunload
  7. ****************** viewLogin panelload
  8. ****************** page_login panelload
  9. ****************** viewLogin panelload
  10.  
  11. //### 过程2(:back):viewLogin.page_login --> viewHome.pageHome
  12. ****************** pageHome panelbeforeload
  13. ****************** viewHome panelbeforeload
  14. ****************** pageHome panelbeforeunload
  15. ****************** viewHome panelbeforeunload
  16. ****************** viewHome panelload
  17. ****************** viewLogin panelunload
  18.  
  19. //### 过程3:viewHome.pageHome --> viewLogin.page_login
  20. ****************** page_login panelbeforeload
  21. ****************** viewLogin panelbeforeload
  22. ****************** page_login panelbeforeunload
  23. ****************** viewLogin panelbeforeunload
  24. ****************** viewHome panelunload
  25. ****************** viewLogin panelload
  26. ****************** page_login panelload
  27. ****************** viewLogin panelload
  28.  
  29. //### 过程4:viewLogin.page_login --> viewLogin.page_register
  30. ****************** page_register panelbeforeload
  31. ****************** viewLogin panelbeforeload
  32. ****************** page_login panelbeforeunload
  33. ****************** viewLogin panelbeforeunload
  34. ****************** page_login panelunload
  35. ****************** viewLogin panelunload
  36. ****************** page_register panelload
  37. ****************** viewLogin panelload
  38.  
  39. //### 过程5:viewLogin.page_register --> viewLogin.page_login
  40. ****************** page_login panelbeforeload
  41. ****************** viewLogin panelbeforeload
  42. ****************** page_register panelbeforeunload
  43. ****************** viewLogin panelbeforeunload
  44. ****************** page_register panelunload
  45. ****************** viewLogin panelunload
  46. ****************** page_login panelload
  47. ****************** viewLogin panelload

发现如下问题:

1,不同view下panel切换:

  transition不带:back的时候,原panel和view有unload事件;

  如果带有:back,则原panel没有unload事件,原view有unload事件

2,同一view下panel切换:

  transition不带:back的时候,原panel有unload事件,view竟然也有unload事件!!;

  如果带有:back,则原panel没有unload事件,view有unload事件!!

想起应该是冒泡事件捣乱,遂在panel的事件中停止冒泡,再次重复上面过程:

  1. //### 过程1:viewHome.pageHome --> viewLogin.page_login
  2. ****************** page_login panelbeforeload
  3. ****************** page_login panelbeforeunload
  4. ****************** viewHome panelunload
  5. ****************** viewLogin panelload
  6. ****************** page_login panelload
  7.  
  8. //### 过程2(:back):viewLogin.page_login --> viewHome.pageHome
  9. ****************** pageHome panelbeforeload
  10. ****************** pageHome panelbeforeunload
  11. ****************** viewLogin panelunload
  12. ****************** viewHome panelload
  13. ****************** pageHome panelload
  14.  
  15. //### 过程3:viewHome.pageHome --> viewLogin.page_login
  16. ****************** page_login panelbeforeload
  17. ****************** page_login panelbeforeunload
  18. ****************** viewHome panelunload
  19. ****************** viewLogin panelload
  20. ****************** page_login panelload
  21.  
  22. //### 过程4:viewLogin.page_login --> viewLogin.page_register
  23. ****************** page_register panelbeforeload
  24. ****************** page_login panelbeforeunload
  25. ****************** page_login panelunload
  26. ****************** page_register panelload
  27.  
  28. //### 过程5:viewLogin.page_register --> viewLogin.page_login
  29. ****************** page_login panelbeforeload
  30. ****************** page_register panelbeforeunload
  31. ****************** page_login panelload
  32. ****************** page_register panelunload

这下子逻辑清晰了:

一、不同view之间的页面切换:

原view有unload事件,新view有load事件;新panel有beforeload、beforeunload,load事件。

二、同一个view之中的页面切换:

原panel有beforeunload、unload事件,新panel有beforeload、load事件;view没有事件!

  1. $('.view,.panel').on('panelbeforeload panelbeforeunload panelload panelunload',function(E){
  2. var el=$(this);
  3. if(el.hasClass('panel')){E.preventDefault();E.stopPropagation();}
  4. if(el.hasClass('panel') && E.type=='panelunload'){el.removeClass('active');}
  5. if(el.hasClass('view') && E.type=='panelunload'){el.find('.panel').removeClass('active');}
  6. });

解决AF3 诡异的页面显示问题的更多相关文章

  1. Loadrunner解决启动浏览器后页面显示空白

    Loadrunner解决启动浏览器后页面显示空白 2018年5月20日,今天照常打开Loadrunner准备学习,在录制的时候却出现了一个问题,浏览器可以启动,但是程序页面缺是加载不出来,主要症状体现 ...

  2. 如何在CSS中解决长英文单词的页面显示问题?CSS3

    简言 在页面排版中,经常遇到长英文单词溢出段落容器的情况,如何解决该问题?现编制如下对比演示程序: 演示程序 42du.cn-在线演示程序 部分html代码 <div class="b ...

  3. 解决nginx+php二级页面显示空白的问题

    迁移官网商城的发现主页的二级界面显示空白页,此https商城网站 后修改nginx配置,显示正常 添加 location ~ [^/]\.php(/|$) { #fastcgi_pass remote ...

  4. ctrl+shift+del 清理火狐缓存,解决页面显示错乱问题

    ctrl+shift+del 清理火狐缓存,解决页面显示错乱问题

  5. 如何解决JSP页面显示乱码问题

    一.JSP页面显示乱码 下面的显示JSP页面(display.jsp)就出现乱码: <html> <head> <title>JSP的中文处理</title& ...

  6. 关于PHP页面显示乱码问题的解决

    关于PHP页面显示乱码问题的解决 网页乱码一直是网络编程高手都头痛的问题,我是一个PHP Web编程的初学者,学习当中也遇到了这个问题,查找了相关的资源,总结如下: 一般的中文编码:gb2312,gb ...

  7. 微信小程序开发过程中tabbar页面显示的相关问题及解决办法!

    在微信小程序的开发过程中如果有使用过tabbar的同学,我相信一定会遇到一些困扰.为什么有些时候代码中明明已经在app.json里面增加了tabbar,可以页面中就是不显示呢?可不可以有些页面显示ta ...

  8. 解决Vue 使用vue-router切换页面时 页面显示没有在顶部的问题

    有时候我们需要页面滚动条滚动到某一固定的位置,一般使用Window scrollTo() 方法. 语法就是:scrollTo(xpos,ypos) xpos:必需.要在窗口文档显示区左上角显示的文档的 ...

  9. long型长整数字在前端页面显示异常及其解决方法

    文章目录 1.引子 2.解决问题 (1)初试EL表达式取long型数值 (2)再探EL表达式取字符串格式long型数值 (3)最后一试---给EL表达式加引号 3.总结 1.引子 在做项目中,发现了一 ...

随机推荐

  1. 自己动手写Android框架-数据库框架

    大家在工作中基本上都有使用到数据库框架 关系型:ORMLite,GreenDao 对象型:DB4O,Perst 这些数据库用起来都非常的简单,对于我们Android上来说这些数据库足够我们使用了,但是 ...

  2. Android 两级菜单栏

    这里来记录下,android 的两级菜单栏,就是顶部切换,和底部的切换.因为在这个上面整了太久的时间,所以特此记录下. 第一种: 先介绍一个网上别人写出来的效果吧,这个当时积分真的很高..CSDN30 ...

  3. ajax无刷新方式对form表单进行赋值!

    /** * 把json数据填充到from表单中 */ <form id="editForm" action="user.php"> 用户名:< ...

  4. hexo静态博客的安装及应用实践记录

    1. 必须要安装 nodejs,git 2. 安装hexo node install -g hexo 3. npm源的问题使在安装时有卡住的问题而导致无法安装,则需要更改npm的源 npm confi ...

  5. 快速理解RequireJs(转)

    RequireJs已经流行很久了,我们在项目中也打算使用它.它提供了以下功能: 声明不同js文件之间的依赖 可以按需.并行.延时载入js库 可以让我们的代码以模块化的方式组织 初看起来并不复杂. 在h ...

  6. Linux shell while

    sh count=1 while [ $count -le 5 ]; do echo 1234567890abcdefghqwertyuiopdasdk > /dev/ttyS1 & e ...

  7. A-Frame不如x3dom

    昨天才发现还有A-Frame这么个框架,是Mozilla(moz://a 这个logo挺有创意的)出的,但看了一下其实现方式和语法后,感觉与x3d/x3dom还是有差距的. 二者的实现方式都是基于We ...

  8. SpringMVC REST 风格静态资源访问配置

    1 在web.xml中使用默认servlet处理静态资源,缺点是如果静态资源过多,则配置量会比较大,一旦有遗漏,则会造成资源无法正常显示或404错误. <!-- 静态资源访问控制 --> ...

  9. Go Revel - Validation(验证)

    Revel提供了内建函数用于验证参数.它提供了: 一个`Validation`上下文集合来管理验证错误信息(键与消息内容) 辅助函数用于检查数据并将错误信息放入上下文 一个模板函数用于从`Valida ...

  10. Java编程的逻辑 (41) - 剖析HashSet

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...