반응형
Vue 컴포넌트의 모든 필드를 다른 컴포넌트와 함께 검증하는 방법(Vee-Validate 사용)
Vue.js를 사용합니다.2.5.13
+ VE-Validate2.0.3
코드 구조는 다음과 같습니다.
./컴포넌트-1.vue:
<template>
<div>
<input type="text" name="input_one" id="input_one"
v-model="input_one"
v-validate="'required'"
:class="{'is-danger': errors.has('input_one')}" />
<component-two></component-two>
<button @click="submitForm">Submit!</button>
</div>
</template>
<script>
import Vue from 'vue'
import VeeValidate from 'vee-validate'
import ComponentTwo from './component-two.vue'
Vue.use(VeeValidate, {
events: 'input|blur'
})
export default {
name: "component-one",
components: {
ComponentTwo
},
data() {
return {
input_one: '',
}
},
methods: {
submitForm: function () {
// Validate before submit form
this.$validator.validateAll().then((result) => {
if (result) {
alert('From Submitted!')
return
}
alert('Correct them errors!')
})
}
}
}
</script>
./컴포넌트-2.vue:
<template>
<div>
<input type="text" name="input_two" id="input_two"
v-model="input_two"
v-validate="'required'"
:class="{'is-danger': errors.has('input_two')}" />
</div>
</template>
<script>
export default {
name: "component-two",
data() {
return {
input_two: ''
}
}
}
</script>
필드 검증 방법ComponentTwo
를 클릭하면button @click="submitForm"
에ComponentOne
(이 컴포넌트에 모든 폼 데이터를 저장합니다).
나는 비슷한 작은 Vue 컴포넌트로 만든 거대한 폼을 가지고 있다(모두 에서 수집됨).ComponentOne
모든 것을 한 곳에서 검증하는 것이 좋습니다.
다음과 같이 컴포넌트 vue 참조에서 수동으로 validateAll()을 트리거할 수 있습니다.
부모 성분
<template>
<div>
<input type="text" name="input_one" id="input_one"
v-model="input_one"
v-validate="'required'"
:class="{'is-danger': errors.has('input_one')}" />
<component-two ref="validateMe"></component-two>
<button @click="submitForm">Submit!</button>
</div>
</template>
<script>
import Vue from 'vue'
import VeeValidate from 'vee-validate'
import ComponentTwo from './component-two.vue'
Vue.use(VeeValidate, {
events: 'input|blur'
})
export default {
name: "component-one",
components: {
ComponentTwo
},
data() {
return {
input_one: '',
}
},
methods: {
submitForm: async function () {
// Validate before submit form
const result = await this.$validator.validateAll() && await this.$refs.validateMe.$validator.validateAll()
if (result) {
alert('From Submitted!')
return
}
alert('Correct them errors!')
}
}
}
</script>
언급URL : https://stackoverflow.com/questions/48509051/how-to-validate-all-fields-in-one-vue-component-with-another-components-together
반응형
'programing' 카테고리의 다른 글
Vue-auth가 vuex 작업 내 $auth에 액세스합니다. (0) | 2022.08.28 |
---|---|
파이프 버퍼 크기가 4k 또는 64k입니까? (0) | 2022.08.28 |
스프링 데이터 JPA GROUP BY 쿼리에서 사용자 지정 개체를 반환하는 방법 (0) | 2022.08.28 |
Vue mapState 상태 이름 변경 (0) | 2022.08.28 |
VueX를 사용하는 VueJs 2와 Redux를 사용하는 리액 (0) | 2022.08.28 |