From 16f8b759bc8439d89cc1131253286074466f8277 Mon Sep 17 00:00:00 2001 From: Eager <1226393396@qq.com> Date: Sun, 16 Sep 2018 00:34:58 +0800 Subject: [PATCH] =?UTF-8?q?fix(FormItem):=20=E8=A7=A3=E5=86=B3required?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E6=97=A0=E6=B3=95=E6=A0=A1=E9=AA=8C=E7=9A=84?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/form/form-item.vue | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/components/form/form-item.vue b/src/components/form/form-item.vue index 2a687687..e9c5feb8 100644 --- a/src/components/form/form-item.vue +++ b/src/components/form/form-item.vue @@ -150,15 +150,19 @@ methods: { setRules() { let rules = this.getRules(); - if (rules.length) { + if (rules.length&&this.required) { + return; + }else if (rules.length) { rules.every((rule) => { this.isRequired = rule.required; }); - this.$off('on-form-blur', this.onFieldBlur); - this.$off('on-form-change', this.onFieldChange); - this.$on('on-form-blur', this.onFieldBlur); - this.$on('on-form-change', this.onFieldChange); + }else if (this.required){ + this.isRequired = this.required; } + this.$off('on-form-blur', this.onFieldBlur); + this.$off('on-form-change', this.onFieldChange); + this.$on('on-form-blur', this.onFieldBlur); + this.$on('on-form-change', this.onFieldChange); }, getRules () { let formRules = this.form.rules; @@ -174,10 +178,14 @@ return rules.filter(rule => !rule.trigger || rule.trigger.indexOf(trigger) !== -1); }, validate(trigger, callback = function () {}) { - const rules = this.getFilteredRule(trigger); + let rules = this.getFilteredRule(trigger); if (!rules || rules.length === 0) { - callback(); - return true; + if (!this.required) { + callback(); + return true; + }else { + rules = [{required: true}]; + } } this.validateState = 'validating';