Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dateTime-picker中快速选择一个日期,有时会回滚到上一个日期,导致交互上有点奇怪 #4886

Closed
lanhuibenz opened this issue Apr 11, 2022 · 4 comments

Comments

@lanhuibenz
Copy link

lanhuibenz commented Apr 11, 2022

具体描述请看以下代码片段注释:

        updateColumnValue: function (value) {
            var _this = this;
            var values = [];
            var type = this.data.type;
            var formatter = this.data.formatter || defaultFormatter;
            var picker = this.getPicker();
            if (type === 'time') {
                var pair = value.split(':');
                values = [formatter('hour', pair[0]), formatter('minute', pair[1])];
            }
            else {
                var date = new Date(value);
                values = [
                    formatter('year', "".concat(date.getFullYear())),
                    formatter('month', padZero(date.getMonth() + 1)),
                ];
                if (type === 'date') {
                    values.push(formatter('day', padZero(date.getDate())));
                }
                if (type === 'datetime') {
                    values.push(formatter('day', padZero(date.getDate())), formatter('hour', padZero(date.getHours())), formatter('minute', padZero(date.getMinutes())));
                }
            }

            // ******这边返回一个promise,处理完两个then再返回,那么原来的updateCollumns会在onChange之前调用,实际上onChange的时候不需要再updateColumns(),因为已经初始化的时候已经更新过了列的数据,会造成用户选择有时会回滚到上一个选择的日期或者别的日期
            return this.set({ innerValue: value })
                .then(function () { return _this.updateColumns(); })
                .then(function () { return picker.setValues(values); });
        },
    },

@2449847346
Copy link

@lanhuibenz 官方组件代码有点问题,滚动会有上谈到之前动画未完成的情况,设置value会有这情况,我没有用到过bind:input或change,但修改官方代码为this.set({innervalue:value}).then(()=> _this.updateColumns(); picker.setValues(values));亲测有效,但我没有测试过 bind:input会如何; 自己拉一下官方的date-picker组件自行修改二次封装即可使用

@2449847346
Copy link

@lanhuibenz 而且该问题只出现在android手机,ios没有问题

@loserparel
Copy link

@lanhuibenz 而该问题只出现在android手机上,ios没有问题

@lanhuibenz 官方组代码有一点问题,滚动会有上面说到之前动画未完成的情况,设置value会有这种情况,我没用过bind:input或change,但修改为修改(this.value) }).then(()=> _this.updateColumns(); picker.setValues(values));亲测有效,但我没有测试过bind:input会如何;自己拉一下官方的date-picker组件自行修改二次封装即可用

代码写错了吧

@landluck
Copy link
Contributor

#3759

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants