wot-design
wot-design copied to clipboard
picker-view组件 setColumnData 逻辑交互上可以优化
当前picker-view组件 setColumnData
方法,当column项变化时候,对比新旧数据后调用 column.setIndex
重置selectedIndex为0。
所以在使用日期组件时候,选择每次选择月份都会将原有日期重置为01(因为月份大小月间隔原因,每个月的日 column 项都不同)
bug:在使用datetime-picker-view组件的时候,切换月份v-model绑定数值无法正确同步,可见 https://ftf.jd.com/wot-design/demo.html#/datetimePickerView 第一个示例可以复现
建议:
在新column项数据中包含当前选择项时,使用新数据中的index作为selectedIndex的值
if (column && JSON.stringify(columnData) !== JSON.stringify(newData)) {
column.data = data
const newIndex = data.map(c => c[this.valueKey]).indexOf(column.getValue())
if (newIndex === -1) {
column.setIndex(0, false)
} else {
column.setIndex(newIndex, false)
}
}
这个组件嵌套层级较多,里面的数据流转得重新梳理,是存在一些问题