【ionic框架bug】slidebox在使用model或popover后width变为0的解决方案

问题描述

如果在silideBox上使用缓存,那么在进入另一个state之后,打开一个Popover或者一个Modal,再返回原来的页面,则slideBox的width变为0,即看不见silideBox的内容了。

解决方案

一.使用ng-if

即不使用缓存,但是这样的弊端就是没有缓存-.-,其实原理就是每次重新渲染slidebox。

二.使用$ionicSlideBoxDelegate.update()

在每次进入页面的时候执行此方法,会让slideBox重新计算宽度和高度。判断进入页面的方法可以是监听$ionicView.enter或者$stateChangeSuccess,建议后者,其中封装的有stateFrom、stateTo等方法方便判断页面的跳转,并且反应较前者快很多。

三.修改ionic源码(建议)

为什么说这个是ionic的框架bug,就是因为它的源码写的有缺陷,导致一些莫名其妙的问题。所以打开ionic.bundle.js查看它的源码(只展示一开始的一部分):

ionic.views.Slider = ionic.views.View.inherit({initialize: function(options) {varslider = this;utilitiesvarnoop = function() {};simplenooperationfunctionvaroffloadFn = function(fn) {setTimeout(fn || noop, 0);};offloadafunctionsexecutioncheckbrowsercapabilitiesvarbrowser = {addEventListener: !!window.addEventListener,touch: ('ontouchstart'inwindow) || window.DocumentTouch && documentinstanceofDocumentTouch,transitions: (function(temp) {varprops = ['transitionProperty', 'WebkitTransition', 'MozTransition', 'OTransition', 'msTransition'];for (var i in props)if (temp.style[props[i]] !== undefined) returntrue;return false;})(document.createElement('swipe'))};var container = options.el;//quitifnorootelementif (!container) return;var element = container.children[0];var slides, slidePos, width, length;options = options || {};var index = parseInt(options.startSlide, 10) || 0;var speed = options.speed || 300;options.continuous = options.continuous !== undefined ? options.continuous : true;function setup() {//此为添加的代码console.log('setup')if (!container.offsetWidth) {return;}//此为添加的代码end//cacheslidesslides = element.children;length = slides.length;

阅读源代码后可以发现,setup方法是slidebox的主方法,所以我在setup的方法里面加了一个打印语句,看他在什么时间会执行这个方法。

测试期间,发现每当popover或者modal打开的时候,这个方法都会执行两次(原因不明),代码中:container返回的是整个slider的HTML代码片段,当他在页面中可见的时候,它的可见宽度大于0,反之为0,所以在我们跳转至其他页面的时候,它的可见宽度即变为0,这个时候我们只要阻止它改变当前的状态即可,所以加上return,这样问题就解决啦。

四.直接引入修改好的js片段,覆盖原来的slidebox代码

需要注意的是,在index页面的引入顺序,sliderView.js一定要在ionic.bundle.js之后引入,这样才能实现覆盖。

下载链接https://github.com/SimonZhangITer/ionic_slidebox/blob/master/slidebox.js

【ionic框架bug】slidebox在使用model或popover后width变为0的解决方案相关推荐

  1. keras系列︱Application中五款已训练模型、VGG16框架(Sequential式、Model式)解读(二)...

    引自:http://blog.csdn.net/sinat_26917383/article/details/72859145 中文文档:http://keras-cn.readthedocs.io/ ...

  2. keras系列︱Application中五款已训练模型、VGG16框架(Sequential式、Model式)解读(二)

    不得不说,这深度学习框架更新太快了尤其到了Keras2.0版本,快到Keras中文版好多都是错的,快到官方文档也有旧的没更新,前路坑太多. 到发文为止,已经有theano/tensorflow/CNT ...

  3. 从.Net框架Bug的提交到修复代码成功合并到.NET CoreFX主线

    从发现.NET Framework中SmtpClient的Bug并拿出解决方案,然后给微软开发者社区提交Bug开始,总共耗时一个多月,对Bug修复的代码最终被采纳,现已合并到.NET Core Lib ...

  4. Ionic 框架宣布 2019 年将正式支持 Vue 和 React

    Ionic 框架开发团队近日宣布,2019年将推出正式支持 Vue (目前处于 alpha 阶段)和 React 的 Ionic 版本,以让开发者在框架选择上更多样化. Ionic 是一个高级的 HT ...

  5. php7 viewmodel,【初念科技】| php框架实例: Laravel之Model Observer模型

    原标题:[初念科技]| php框架实例: Laravel之Model Observer模型 本文主要学习下Laravel的Model Observer模型观察者,小编把自己的一点点经验分享出来希望对别 ...

  6. ionic框架中TABS中tabs-striped条形切换问题

    昨天在写案例中,发现ionic框架中tabs-striped无法随鼠标点击而改变class中的active,思考了一下,我在相对应的路由中的controller添加了一句话:$scope.*_acti ...

  7. ionic框架环境配置

    参考文章 Cordova 3.x 基础(1) -- 环境搭建(Windows / Android) http://rensanning.iteye.com/blog/2016364 phoneGap之 ...

  8. 关于使用scrapy框架编写爬虫以及Ajax动态加载问题、反爬问题解决方案

    关于使用scrapy框架编写爬虫以及Ajax动态加载问题.反爬问题解决方案 参考文章: (1)关于使用scrapy框架编写爬虫以及Ajax动态加载问题.反爬问题解决方案 (2)https://www. ...

  9. LayUi前端框架删除数据缓存问题(解决删除后刷新页面内容又会显示问题)

    LayUi前端框架删除数据缓存问题(解决删除后刷新页面内容又会显示问题) 参考文章: (1)LayUi前端框架删除数据缓存问题(解决删除后刷新页面内容又会显示问题) (2)https://www.cn ...

  10. ECharts 饼图切换数据源bug 开始没数据显示 切换或刷新后显示

    1.出现问题原因 一个饼图,右上方两个按钮分别为今天和本月,分别调用不同接口控制,点击则调用不同接口同时饼图绑定数据源刷新:出现此问题原因点击今日按钮有一个饼图区域形没有数据不显示,对应数据值比例都没 ...

最新文章

  1. 尺度不变特征变换匹配算法详解
  2. java使用JDBC连接数据库的几种方式
  3. 局域网传输文件的一点研究
  4. 设计模式之行为类模式PK
  5. SSE事件作用,错误分析
  6. python标签控件是_Python 图形用户界面编程
  7. 移动支付--银联,支付宝,微信(android)
  8. 从高斯消元到矩阵的三角分解(LU)
  9. 本篇文章使用vue结合element-ui开发tab切换vue的不同组件,每一个tab切换的都是一个新的组件。
  10. layui整合Echart
  11. JAVA基础篇(一)
  12. Linux中的UID与GID
  13. 《python数据分析与挖掘实战》笔记第3章
  14. unity 求出物体所在相机的横截面 解决调整 field Of View后场景物体和UI不匹配
  15. 寒假刷题13: Anu Has a Function Codeforces Round #618 (Div. 2) C
  16. 2021-2027全球与中国镍钛合金医疗器械市场现状及未来发展趋势
  17. 【AI视野·今日CV 计算机视觉论文速览 第230期】Fri, 2 Jul 2021
  18. HCIP第十七天笔记
  19. 淘宝婴儿产品销售的数据分析
  20. Microsoft Platform SDK Febrary 2003下载(更新VC6的SDK)

热门文章

  1. 分类与聚类的区别以及聚类的方法分类
  2. 通俗易懂讲PID,附参数调试口诀
  3. redis cluster集群架构详解(十二)- 集群通信
  4. 图文教你选择和区别A卡和N卡
  5. win安装android系统,电脑可以装安卓系统啦!windows 安卓双系统安装详细教程
  6. vm安装android,Vmware虚拟机安装安卓4.0系统教程
  7. 关于axure rp 是做什么用的
  8. 全波傅里叶算法计c语言,全周波傅里叶算法
  9. 前端开发hr面试试题
  10. 904L 是一种耐酸不锈钢含低碳