【发布时间】:2019-11-22 13:30:38
【问题描述】:
我想从我的子组件(client 和 advice,见下文)中检索所有输入值,但不知道如何继续。
client.vue
<template>
<div id="client">
<input type="text" v-model="client.name" />
<input type="text" v-model="client.code" />
</div>
</template>
<script>
export default {
data() {
return {
client: {
name: '',
code: '',
}
}
}
}
</script>
advice.vue
<template>
<div id="advice">
<input type="text" v-model="advice.foo" />
<input type="text" v-model="advice.bar" />
<div v-for="index in 2" :key="index">
<input type="text" v-model="advice.amount[index]" />
</div>
</div>
</template>
<script>
export default {
data() {
return {
advice: {
foo: '',
bar: '',
amount:[]
}
}
}
}
</script>
每个组件的字段都比上面的例子多。
我的主页(父)看起来很简单:
<template>
<form id="app" @submit="printForm">
<clientInfo />
<advice />
<input type="submit" value="Print" class="btn" />
</form>
</template>
<script>
import clientInfo from "@/components/clientInfo.vue";
import advice from "@/components/advice.vue";
export default {
components: {
clientInfo,
advice
},
methods: {
printForm() {}
}
}
</script>
我的第一个想法是$emit,但不确定如何在不将@emitMethod="parentEmitMethod" 附加到每个字段的情况下有效地处理超过 20 个字段。
我的第二个想法是拥有一个 Vuex 存储(如下所示),但我不知道如何一次保存所有状态,也不知道是否应该。
new Vuex.Store({
state: {
client: {
name:'',
code:''
},
advice: {
foo:'',
bar:'',
amount:[]
}
}
})
【问题讨论】:
标签: vue.js vuejs2 vue-component vuex