Commit f203b14f9fe4ea37c16f343c69222605ca85a99d
1 parent
b50e59f5
form-item watch rules change change rules
Showing
1 changed file
with
16 additions
and
12 deletions
Show diff stats
src/components/form/form-item.vue
@@ -90,6 +90,9 @@ | @@ -90,6 +90,9 @@ | ||
90 | }, | 90 | }, |
91 | validateStatus (val) { | 91 | validateStatus (val) { |
92 | this.validateState = val; | 92 | this.validateState = val; |
93 | + }, | ||
94 | + rules (val){ | ||
95 | + this.setRules(); | ||
93 | } | 96 | } |
94 | }, | 97 | }, |
95 | inject: ['form'], | 98 | inject: ['form'], |
@@ -143,6 +146,18 @@ | @@ -143,6 +146,18 @@ | ||
143 | } | 146 | } |
144 | }, | 147 | }, |
145 | methods: { | 148 | methods: { |
149 | + setRules() { | ||
150 | + let rules = this.getRules(); | ||
151 | + if (rules.length) { | ||
152 | + rules.every((rule) => { | ||
153 | + this.isRequired = rule.required; | ||
154 | + }); | ||
155 | + this.$off('on-form-blur', this.onFieldBlur); | ||
156 | + this.$off('on-form-change', this.onFieldChange); | ||
157 | + this.$on('on-form-blur', this.onFieldBlur); | ||
158 | + this.$on('on-form-change', this.onFieldChange); | ||
159 | + } | ||
160 | + }, | ||
146 | getRules () { | 161 | getRules () { |
147 | let formRules = this.form.rules; | 162 | let formRules = this.form.rules; |
148 | const selfRules = this.rules; | 163 | const selfRules = this.rules; |
@@ -229,18 +244,7 @@ | @@ -229,18 +244,7 @@ | ||
229 | value: this.fieldValue | 244 | value: this.fieldValue |
230 | }); | 245 | }); |
231 | 246 | ||
232 | - let rules = this.getRules(); | ||
233 | - | ||
234 | - if (rules.length) { | ||
235 | - rules.every(rule => { | ||
236 | - if (rule.required) { | ||
237 | - this.isRequired = true; | ||
238 | - return false; | ||
239 | - } | ||
240 | - }); | ||
241 | - this.$on('on-form-blur', this.onFieldBlur); | ||
242 | - this.$on('on-form-change', this.onFieldChange); | ||
243 | - } | 247 | + this.setRules(); |
244 | } | 248 | } |
245 | }, | 249 | }, |
246 | beforeDestroy () { | 250 | beforeDestroy () { |