详细问题描述
[内容]picker(选择器)二级和三级快速滑动快速点击确定易错位和出现undfined
重现步骤
[步骤]
1.打开二级城市
- 快速滑动选项
- 快速选择确定
[结果]出现undfined或错误
[期望]
运行环境
[系统版本]ios9.3.3
[浏览器版本]
[IDE版本]
[mui版本]3.2.0
附件
[代码片段]
[安装包]
联系方式
[QQ]285496761
[电话]
详细问题描述
[内容]picker(选择器)二级和三级快速滑动快速点击确定易错位和出现undfined
重现步骤
[步骤]
1.打开二级城市
运行环境
[系统版本]ios9.3.3
[浏览器版本]
[IDE版本]
[mui版本]3.2.0
附件
[代码片段]
[安装包]
联系方式
[QQ]285496761
[电话]
发现同样的问题,我的做法是修改了一下mui.picker.all.js,肯定有更好的办法,但是我先这么用着吧。。
在picker构造函数中添加一个pickEnable = true(随便取的,是否允许选取)
self.bindEvent();
self.pickEnable = true; //大概第41行
下面修改两个方法。
Picker.prototype.startInertiaScroll = function(event) {
/////////////
//----
if (distAngle == 0) {
self.endScroll();
self.pickEnable = true; //滚动结束添加一个标记
return;
}
self.scrollDistAngle(nowTime, startAngle, distAngle, duration);
};
Picker.prototype.scrollDistAngle = function(nowTime, startAngle, distAngle, duration) {
var self = this;
self.stopInertiaMove = false;
(function(nowTime, startAngle, distAngle, duration) {
var frameInterval = 13;
var stepCount = duration / frameInterval;
var stepIndex = 0;
(function inertiaMove() {
if (self.stopInertiaMove) return;
self.pickEnable = false; //如果pick还在移动,添加标记,禁止选取
var newAngle = self.quartEaseOut(stepIndex, startAngle, distAngle, stepCount);
self.setAngle(newAngle);
stepIndex++;
if (stepIndex > stepCount - 1 || newAngle < self.beginExceed || newAngle > self.endExceed) {
self.endScroll();
self.pickEnable = true;//如果pick滚动结束,添加标记,解除禁止
return;
}
setTimeout(inertiaMove, frameInterval);
})();
})(nowTime, startAngle, distAngle, duration);
};
接下来就是对城市选择的那部分做一点处理。
self.ok.addEventListener('tap', function(event) {
var pickEnable = true;
for(var i=0;i<self.pickers.length;i++){
pickEnable = pickEnable && self.pickers[i].pickEnable ;//获取每个picker实例中的pickEnabel
}
if(!pickEnable ){return;}
if (self.callback) {
var rs = self.callback(self.getSelectedItems());
if (rs !== false) {
self.hide();
}
}
}, false);