Quellcode durchsuchen

DatePicker: fix trigger multiple watch, fixed #597

qingwei.li vor 8 Jahren
Ursprung
Commit
202a77abc1

+ 1 - 1
.gitattributes

@@ -1 +1 @@
-*.js linguist-language=Vue
+test/**/*.js linguist-language=Vue

+ 1 - 1
packages/date-picker/src/basic/month-table.vue

@@ -47,7 +47,7 @@
   </table>
 </template>
 
-<script type="text/ecmascript-6">
+<script type="text/babel">
   import { $t } from '../util';
 
   export default {

+ 0 - 1
packages/date-picker/src/basic/time-spinner.vue

@@ -78,7 +78,6 @@
           this.hoursPrivate = oldVal;
         }
         this.$refs.hour.scrollTop = Math.max(0, (this.hoursPrivate - 2.5) * 32 + 80);
-
         this.$emit('change', { hours: newVal });
       },
 

+ 3 - 0
packages/date-picker/src/panel/date-range.vue

@@ -400,6 +400,9 @@
       },
 
       handleRangePick(val, close = true) {
+        if (this.maxDate === val.maxDate && this.minDate === val.minDate) {
+          return;
+        }
         this.maxDate = val.maxDate;
         this.minDate = val.minDate;
 

+ 2 - 2
packages/date-picker/src/panel/date.vue

@@ -260,8 +260,8 @@
         } else {
           this.date.setMonth(month);
           this.resetDate();
-          this.value = new Date(this.date.getFullYear(), month, 1);
-          this.$emit('pick', this.value);
+          const value = new Date(this.date.getFullYear(), month, 1);
+          this.$emit('pick', value);
         }
       },
 

+ 4 - 0
packages/date-picker/src/panel/time-range.vue

@@ -87,6 +87,9 @@
     watch: {
       value(val) {
         const time = clacTime(val);
+        if (time.minTime === this.minTime && time.maxTime === this.maxTime) {
+          return;
+        }
 
         this.handleMinChange({
           hours: time.minTime.getHours(),
@@ -183,6 +186,7 @@
         this.minTime = limitRange(this.minTime, minSelectableRange);
         this.maxTime = limitRange(this.maxTime, maxSelectableRange);
 
+        if (first) return;
         this.$emit('pick', [this.minTime, this.maxTime], visible, first);
       },
 

+ 0 - 8
packages/date-picker/src/panel/time-select.vue

@@ -72,14 +72,6 @@
         if (this.value && val && compareTime(this.value, val) === -1) {
           this.$emit('pick');
         }
-      },
-
-      value(val, old) {
-        if (val && this.items.some(i => i.value === val && !i.disabled)) {
-          this.$emit('pick', val, true);
-        } else {
-          this.$emit('pick', old, true);
-        }
       }
     },
 

+ 1 - 0
packages/date-picker/src/panel/time.vue

@@ -129,6 +129,7 @@
       },
 
       handleConfirm(visible = false, first) {
+        if (first) return;
         const date = new Date(limitRange(this.currentDate, this.selectableRange));
         this.$emit('pick', date, visible, first);
       },

+ 0 - 1
packages/date-picker/src/picker.vue

@@ -46,7 +46,6 @@ const newPopper = {
   beforeDestroy: Popper.beforeDestroy
 };
 
-// const FUNCTION_KEYS = [13, 16, 17, 18, 19, 20, 27, 33, 34, 35, 36, 37, 38, 39, 40];
 const RANGE_SEPARATOR = ' - ';
 const DEFAULT_FORMATS = {
   date: 'yyyy-MM-dd',