【背景介绍】
MUI 版本 2.8。
在页面中使用了 Slider 组件(mui-slider),由于轮播面板的数量和内容都是动态从服务器端加载的,为了避免白屏,页面初始化时先设置 Slider 隐藏,同时有加载动画,等待加载完毕后再控制 Slider 显示。
【问题阐述】
初始化:
var silder = mui(".mui-slider").slider();
之后:
silder.nextItem();
silder.prevItem();
silder.gotoItem();
均报 undefined 错误,定位到 mui.js 第 4699 行:
return this.pages[slideNumber][0];
反复实验后发现,只有当 Slider 组件(包括其父容器)显示时,才不会抛异常。this.pages 正常应该是一个 N 维数组(N 取决于轮播区域数量),但异常时变成了一个一维数组。
几经阅读代码,发现 mui.js 第 4658 行存在代码:
// 当slider处于隐藏状态时,导致snap计算是错误的,临时先这么判断一下,后续要考虑解决所有scroll在隐藏状态下初始化属性不正确的问题
var currentPage = this.pages[this.loop ? 1 : 0];
【解决方案】
在 Slider 组件显示后再执行初始化;或调用 slider.refresh(); 方法即可。
8 个评论
要回复文章请先登录或注册
8***@qq.com
s***@163.com
s***@163.com
k***@163.com
李易峰知道吗
3***@qq.com
3***@qq.com
3***@qq.com