Commit 5d076fc54a9f74e61676628cf68c8d97ec057b6c

Authored by Aresn
Committed by GitHub
2 parents bb6d1eeb 16f8b759

Merge pull request #4537 from weidapao/fix_bug2

 fix(FormItem): 解决required属性无法校验的bug
Showing 1 changed file with 16 additions and 8 deletions   Show diff stats
src/components/form/form-item.vue
@@ -150,15 +150,19 @@ @@ -150,15 +150,19 @@
150 methods: { 150 methods: {
151 setRules() { 151 setRules() {
152 let rules = this.getRules(); 152 let rules = this.getRules();
153 - if (rules.length) { 153 + if (rules.length&&this.required) {
  154 + return;
  155 + }else if (rules.length) {
154 rules.every((rule) => { 156 rules.every((rule) => {
155 this.isRequired = rule.required; 157 this.isRequired = rule.required;
156 }); 158 });
157 - this.$off('on-form-blur', this.onFieldBlur);  
158 - this.$off('on-form-change', this.onFieldChange);  
159 - this.$on('on-form-blur', this.onFieldBlur);  
160 - this.$on('on-form-change', this.onFieldChange); 159 + }else if (this.required){
  160 + this.isRequired = this.required;
161 } 161 }
  162 + this.$off('on-form-blur', this.onFieldBlur);
  163 + this.$off('on-form-change', this.onFieldChange);
  164 + this.$on('on-form-blur', this.onFieldBlur);
  165 + this.$on('on-form-change', this.onFieldChange);
162 }, 166 },
163 getRules () { 167 getRules () {
164 let formRules = this.form.rules; 168 let formRules = this.form.rules;
@@ -174,10 +178,14 @@ @@ -174,10 +178,14 @@
174 return rules.filter(rule => !rule.trigger || rule.trigger.indexOf(trigger) !== -1); 178 return rules.filter(rule => !rule.trigger || rule.trigger.indexOf(trigger) !== -1);
175 }, 179 },
176 validate(trigger, callback = function () {}) { 180 validate(trigger, callback = function () {}) {
177 - const rules = this.getFilteredRule(trigger); 181 + let rules = this.getFilteredRule(trigger);
178 if (!rules || rules.length === 0) { 182 if (!rules || rules.length === 0) {
179 - callback();  
180 - return true; 183 + if (!this.required) {
  184 + callback();
  185 + return true;
  186 + }else {
  187 + rules = [{required: true}];
  188 + }
181 } 189 }
182 190
183 this.validateState = 'validating'; 191 this.validateState = 'validating';