Browse Source

Scrollbar: return if component gets destroyed in mounted hook (#2588)

* Scrollbar: return if component gets destroyed in mounted hook

* Select: handle paste events in filterable mode
杨奕 8 years ago
parent
commit
332b58886d
2 changed files with 5 additions and 1 deletions
  1. 1 0
      packages/scrollbar/src/main.js
  2. 4 1
      packages/select/src/select.vue

+ 1 - 0
packages/scrollbar/src/main.js

@@ -104,6 +104,7 @@ export default {
     update() {
       let heightPercentage, widthPercentage;
       const wrap = this.wrap;
+      if (!wrap) return;
 
       heightPercentage = (wrap.clientHeight * 100 / wrap.scrollHeight);
       widthPercentage = (wrap.clientWidth * 100 / wrap.scrollWidth);

+ 4 - 1
packages/select/src/select.vue

@@ -59,6 +59,7 @@
       @keydown.native.enter.prevent="selectOption"
       @keydown.native.esc.prevent="visible = false"
       @keydown.native.tab="visible = false"
+      @paste.native="debouncedOnInputChange"
       @mouseenter.native="inputHovering = true"
       @mouseleave.native="inputHovering = false"
       :icon="iconClass">
@@ -243,6 +244,8 @@
         });
         this.hoverIndex = -1;
         if (this.multiple && this.filterable) {
+          this.inputLength = this.$refs.input.value.length * 15 + 20;
+          this.managePlaceholder();
           this.resetInputHeight();
         }
         if (this.remote && typeof this.remoteMethod === 'function') {
@@ -651,7 +654,7 @@
         this.resetInputHeight();
       }
       this.$nextTick(() => {
-        if (this.$refs.reference.$el) {
+        if (this.$refs.reference && this.$refs.reference.$el) {
           this.inputWidth = this.$refs.reference.$el.getBoundingClientRect().width;
         }
       });