Ver código fonte

fix input-number invalid value reset bug

baiyaaaaa 8 anos atrás
pai
commit
f20c37885f

+ 2 - 0
packages/input-number/src/input-number.vue

@@ -117,6 +117,8 @@
         if (newVal <= this.max && newVal >= this.min) {
           this.$emit('change', newVal, oldVal);
           this.$emit('input', newVal);
+        } else {
+          this.currentValue = oldVal;
         }
       }
     },

+ 29 - 0
test/unit/specs/input-number.spec.js

@@ -234,6 +234,35 @@ describe('InputNumber', () => {
     expect(vm.$el.querySelector('.el-input-number__decrease')).to.not.exist;
     expect(vm.$el.querySelector('.el-input-number__increase')).to.not.exist;
   });
+  it('invalid value reset', done => {
+    vm = createVue({
+      template: `
+        <el-input-number v-model="value" :min="5" :max="10">
+        </el-input-number>
+      `,
+      data() {
+        return {
+          value: 5
+        };
+      }
+    }, true);
+
+    vm.value = 100;
+    vm.$nextTick(_ => {
+      expect(vm.value).to.be.equal(5);
+      vm.value = 4;
+
+      vm.$nextTick(_ => {
+        expect(vm.value).to.be.equal(5);
+        vm.value = 'dsajkhd';
+
+        vm.$nextTick(_ => {
+          expect(vm.value).to.be.equal(5);
+          done();
+        });
+      });
+    });
+  });
   it('event:change', done => {
     vm = createVue({
       template: `