vue.js 2를 사용하여 양식을 제출하는 방법
내 뷰 블레이드 라벨은 다음과 같습니다.
<form slot="search" class="navbar-search" action="{{url('search')}}">
<search-header-view></search-header-view>
</form>
View 블레이드 laravel call vue 구성 요소(검색 헤더 뷰 구성 요소)
내 vue 컴포넌트(search-header-view 컴포넌트)는 다음과 같습니다.
<template>
<div class="form-group">
<div class="input-group">
<input type="text" class="form-control" placeholder="Search" name="q" autofocus v-model="keyword">
<span class="input-group-btn">
<button class="btn btn-default" type="submit" id="submit-search"><span class="fa fa-search"></span></button>
</span>
<ul v-if="!selected && keyword">
<li v-for="state in filteredStates" @click="select(state.name)">{{ state.name }}</li>
</ul>
</div>
</div>
</template>
<script>
export default {
name: 'SearchHeaderView',
data() {
return {
baseUrl: window.Laravel.baseUrl,
keyword: null,
selected: null,
filteredStates: []
}
},
watch: {
keyword(value) {
this.$store.dispatch('getProducts', { q: value })
.then(res => {
this.filteredStates = res.data;
})
}
},
methods: {
select: function(state) {
this.keyword = state
this.selected = state
document.getElementById('submit-search').submit()
},
input: function() {
this.selected = null
}
},
}
</script>
사용자가 키워드를 클릭하면 양식을 제출하고 싶다.
document.getElementById('submit-search')를 시도합니다.송신()
그러나 콘솔에는 다음과 같은 오류가 있습니다.
TypeError: document.getElementById(...).submit은 함수가 아닙니다.
이 오류를 해결하려면 어떻게 해야 하나요?
전화하셔야 합니다.submit()
에서<form>
요소(컴포넌트의 루트 요소):
this.$el.submit();
편집: 질문을 업데이트했으므로 위의 내용은 적용되지 않습니다.
버튼 클릭을 트리거하려면 호출만 하면 됩니다.click()
버튼 요소:
<button ref="submitButton">Foo</button>
this.$refs.submitButton.click();
컴포넌트가 단단히 결합되어 있는 경우에는 이 방법으로도 괜찮습니다.그렇지 않은 경우, 보다 깨끗한 솔루션은$emit
당신의 이벤트<search-header-view>
다음과 같이 부모 컴포넌트에서 응답합니다.
this.$emit('submit');
상위 구성 요소:
<search-header-view @submit="submit">
methods: {
submit() {
// Submit the form manually here (add a ref to your form element)
this.$refs.form.submit();
}
}
라고 쓰여 있는 경우submit is not a function
당신이 그것을 언급하고 있음에도 불구하고$refs
: 폼 컨트롤에 전송 이름 또는 ID가 있는 경우 폼의 전송 방식을 마스킹합니다.저 같은 경우에는name="submit"
송신 버튼에서 삭제해 버리면 정상적으로 동작합니다.
제공만 하면 됩니다.@submit
청취자:
<form slot="search" class="navbar-search" @submit="submited">
<search-header-view></search-header-view>
</form>
그리고 관련된 방법:
methods: {
submited (e) {
// e is the form event, e.target is the form, do your things on submit
}
}
언급URL : https://stackoverflow.com/questions/47878165/how-to-submit-a-form-using-vue-js-2
'programing' 카테고리의 다른 글
Android에서 버튼 주위의 패딩을 제거하는 방법 (0) | 2022.08.11 |
---|---|
얼른 값이 C배열에 존재한다? (0) | 2022.08.11 |
Axi의 기본 기본 URL 변경 (0) | 2022.08.11 |
joke.fn()을 사용하여 속성을 조롱하는 방법 (0) | 2022.08.11 |
Android에서 한 활동에서 다른 활동으로 개체를 전달하는 방법 (0) | 2022.08.11 |