项目场景:
在线喷Uview框架第二弹:
1. 在u-picker组件的多列的时候只能从第一列到最后一列依次往下选,不能回选!
2. 当选中后,选中项的下一项,还不能自动回到第一项!
差评!,差评!!,差评!!!
解决方案:
提示:自己重写代码覆盖了官方源代码;
我们依次找到:u-picker > change > multiSelector
覆盖代码:
const choosed = e.detail.value;
// 判断变化的是哪一列
const changed = {
column: null,
index: null
}
choosed.forEach((cur, index) => {
if (this.preAddress[index] != cur) {
changed.column = index;
changed.index = cur;
this.preAddress = choosed;
return;
}
});
// 如果选择的列小于之前的列,说明用户选择的列数减少了,需要将后面的列重置为0
if (this.valueArr.length >= changed.column) {
for (let i = (changed.column + 1); i < this.valueArr.length; i++) {
this.valueArr[i] = 0;
}
}
// 重新赋值 - 目的是重新触发Vue的监听 - 也可以使用深拷贝
this.valueArr = JSON.parse(JSON.stringify(this.valueArr));
this.$emit('columnchange', changed);