wot-design icon indicating copy to clipboard operation
wot-design copied to clipboard

picker-view组件 setColumnData 逻辑交互上可以优化

Open tclyjy opened this issue 3 years ago • 1 comments

当前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)
  }
}

tclyjy avatar Jul 12 '21 07:07 tclyjy

这个组件嵌套层级较多,里面的数据流转得重新梳理,是存在一些问题

yawuling avatar Jul 12 '21 07:07 yawuling