我的子组件中有一个表单:
<form @submit="submitForm">
<input type="text" v-model="textInput" />
</form>
export default {
name: "childComp",
data: function() {
return {
textInput: ""
}
}
}
现在从我的父组件中,我有一个按钮,我需要单击该按钮以获取子表单数据。
<button type="button" @click="getFormData()"> click </button>
export default {
name: "ParentComp",
data: function() {
return {
formData: []
}
},
methods: {
getFormData(d) {
formData.push(d);
console.log(d)
}
}
}
感谢您的帮助。
答案 0 :(得分:0)
我使用ref=""
找到了解决方案。不确定将来会变得多么复杂。
这就是我所做的。
My parent component:
<button type="button" @click="getFormData()"> click </button>
<childComp ref="childComp" />
export default {
name: "ParentComp",
data: function() {
return {
formData: []
}
},
methods: {
getFormData() {
const data = this.$refs.childComp.submitForm()
formData.push(data);
console.log(data)
}
}
}
我的孩子部分:
<form @submit="submitForm">
<input type="text" v-model="textInput" />
</form>
export default {
name: "childComp",
data: function() {
return {
textInput: ""
}
},
submitForm() {
return this.form;
}
}
答案 1 :(得分:0)
即使您通过使用$ref
来解决它,我还是建议您将v-model
实现的功能运用到您的自定义组件中。
这是一种更干净的方法,通过这样做,您将始终可以获取表单数据,而不必在想要使用它时实际进行检索。
可以执行以下操作:
父母
<button type="button" @click="getFormData()"> click </button>
<childComp v-model="formData" />
export default {
name: "ParentComp",
data: function() {
return {
formData: {}
}
},
methods: {
getFormData() {
console.log(this.formData)
}
}
}
孩子
<form>
<input type="text" v-model="selected.text" />
</form>
export default {
name: "childComp",
props: ['value'],
computed: {
selected: {
get() {
return this.value;
},
set(value) {
this.$emit('input', value);
}
}
}
}