Commit 915055614b5f6ab4758eb2b322f962c1a6894548

Authored by 梁灏
1 parent d70cad45

TimePicker

TimePicker
Showing 1 changed file with 24 additions and 11 deletions   Show diff stats
src/components/date-picker/base/time-spinner.vue
... ... @@ -156,20 +156,33 @@
156 156 this.$emit('on-change', data);
157 157  
158 158 const from = this.$els[type].scrollTop;
159   -
160   - let index = cell.text;
161   - const Type = firstUpperCase(type);
162   - const disabled = this[`disabled${Type}`];
163   - if (disabled.length && this.hideDisabledOptions) {
164   - let _count = 0;
165   - disabled.forEach(item => item <= index ? _count++ : '');
166   - index -= _count;
167   - }
168   -
169   - const to = 24 * index;
  159 + const to = 24 * this.getScrollIndex(type, cell.text);
170 160 scrollTop(this.$els[type], from, to, 500);
171 161 }
  162 + },
  163 + getScrollIndex (type, index) {
  164 + const Type = firstUpperCase(type);
  165 + const disabled = this[`disabled${Type}`];
  166 + if (disabled.length && this.hideDisabledOptions) {
  167 + let _count = 0;
  168 + disabled.forEach(item => item <= index ? _count++ : '');
  169 + index -= _count;
  170 + }
  171 + return index;
  172 + },
  173 + updateScroll () {
  174 + const times = ['hours', 'minutes', 'seconds'];
  175 + times.forEach(type => this.$els[type].style.overflow = 'hidden');
  176 + this.$nextTick(() => {
  177 + times.forEach(type => {
  178 + this.$els[type].scrollTop = 24 * this.getScrollIndex(type, this[type]);
  179 + });
  180 + this.$nextTick(() => times.forEach(type => this.$els[type].style.overflow = 'auto'));
  181 + });
172 182 }
  183 + },
  184 + compiled () {
  185 + this.updateScroll();
173 186 }
174 187 };
175 188 </script>
176 189 \ No newline at end of file
... ...