我有两个组件
我的第一个组件是这样的:
<template>
<div>
...
<form-radio id="gender" name="gender" :data="genderData" v-model="gender">Gender</form-radio>
...
<button type="submit" class="btn btn-primary" @click="submit">Submit</button>
</div>
</template>
<script>
export default {
data() {
return {
gender: null,
genderData: [
{id: 1, label: 'Men', value:1},
{id: 2, label: 'Women', value:2}
],
}
},
methods: {
submit() {
console.log('submit profile')
console.log(this.gender)
}
}
}
</script>
在第一个组件上,它将调用表单输入组件
表单输入组件如下:
<template>
<div class="form-group">
<label class="col-sm-3 control-label"><slot></slot></label>
<div class="col-sm-9">
<label v-for="item in data" class="radio-inline">
<input type="radio" :name="name" :id="item.id" :value="item.value" :required="isRequired ? true : false" @input="$emit('input', $event.target.value)">
{{item.label}}
</label>
</div>
</div>
</template>
<script>
export default {
props: {
name: String,
data: Array,
isRequired:{
type: Boolean,
default: true
},
pattern: String,
value: {
type: [String, Number]
}
}
}
</script>
我使用那样的模式。因此,表单输入组件可以在许多组件中使用
但我的问题是:提交按钮时无法检索值
我尝试这样做,但console.log(this.gender)
的结果是null
我想在输入数据名称和提交表单时,它会获得性别
我该如何解决这个问题?
答案 0 :(得分:1)
对于广播框和选择,请使用@change
代替@input
:
<input type="radio" ... @change="$emit('input', $event.target.value)">
答案 1 :(得分:1)
你必须在radio.Follow中添加一个值attr:
<input type="radio" id="gender" value="male" v-model="gender">
脚本
export default {
data() {
return{
gender: 'male'
}
}
}
如果您想选择选项:
<select v-model="selected">
<option disabled value="">Select sex</option>
<option value="male">Male</option>
<option value="female">Female</option>
</select>
脚本
export default {
data() {
return {
selected: ''
}
}
}