简体   繁体   English

使用带有 html select 选项的 v-model

[英]Using v-model with html select option

I'm trying to have v-model notice which select option a user has clicked on but it's not working and staying as null.我正在尝试让 v-model 通知用户单击了哪个 select 选项,但它不起作用并保持为 null。 My select field is a selection of the 50 US states and it is its own component in a separate file.我的 select 字段是美国 50 个州的选择,它是单独文件中的自己的组件。 I need v-model to notice the current value that is selected in order to send it back to a database and store the value.我需要 v-model 来注意选择的当前值,以便将其发送回数据库并存储该值。

Inside the form表格内

<SelectBox v-model="editFormData.state" />

The Select Box component Select 盒组件

<template>
  <select name="state" id="state">
    <option value="" selected="selected">State</option>
    <option value="AL">Alabama</option>
    <option value="AK">Alaska</option>
    <option value="AZ">Arizona</option>
    <option value="AR">Arkansas</option>
    <option value="CA">California</option>
    <option value="CO">Colorado</option>
    <option value="CT">Connecticut</option>
    <option value="DE">Delaware</option>
    <option value="DC">District Of Columbia</option>
    <option value="FL">Florida</option>
    <option value="GA">Georgia</option>
    <option value="HI">Hawaii</option>
    <option value="ID">Idaho</option>
    <option value="IL">Illinois</option>
    <option value="IN">Indiana</option>
    <option value="IA">Iowa</option>
    <option value="KS">Kansas</option>
    <option value="KY">Kentucky</option>
    <option value="LA">Louisiana</option>
    <option value="ME">Maine</option>
    <option value="MD">Maryland</option>
    <option value="MA">Massachusetts</option>
    <option value="MI">Michigan</option>
    <option value="MN">Minnesota</option>
    <option value="MS">Mississippi</option>
    <option value="MO">Missouri</option>
    <option value="MT">Montana</option>
    <option value="NE">Nebraska</option>
    <option value="NV">Nevada</option>
    <option value="NH">New Hampshire</option>
    <option value="NJ">New Jersey</option>
    <option value="NM">New Mexico</option>
    <option value="NY">New York</option>
    <option value="NC">North Carolina</option>
    <option value="ND">North Dakota</option>
    <option value="OH">Ohio</option>
    <option value="OK">Oklahoma</option>
    <option value="OR">Oregon</option>
    <option value="PA">Pennsylvania</option>
    <option value="RI">Rhode Island</option>
    <option value="SC">South Carolina</option>
    <option value="SD">South Dakota</option>
    <option value="TN">Tennessee</option>
    <option value="TX">Texas</option>
    <option value="UT">Utah</option>
    <option value="VT">Vermont</option>
    <option value="VA">Virginia</option>
    <option value="WA">Washington</option>
    <option value="WV">West Virginia</option>
    <option value="WI">Wisconsin</option>
    <option value="WY">Wyoming</option>
  </select>
</template>

<script>
export default {
  name: 'SelectBox',
};
</script>

<style scoped>
select {
  font-size: 12px;
  color: rgba(0, 0, 0, 0.5);
  -webkit-appearance: menulist;
  -moz-appearance: menulist;
  border-radius: 3px;
}
</style>

As docs said, By default, v-model on a component uses value as the prop and input as the event.正如文档所说,默认情况下,组件上的 v-model 使用 value 作为 prop 和 input 作为事件。 So you need the value and input event to change the value所以你需要valueinput event来改变value

<select name="state" id="state" :value="value" @change="e => $emit('input', e.target.value)">
...
</select>
<script>
export default {
  name: 'SelectBox',
  props: {
    value: String,
  },
};
</script>


In you select component use v-modal as below在你 select 组件中使用 v-modal 如下

<select v-model="model" name="state" id="state">
    <option value="" selected="selected">State</option>
    <option value="AL">Alabama</option>
    <option value="AK">Alaska</option>
</select>

And inside the form you just call在你刚刚调用的表格中

<SelectBox/>

You can't use v-model in the component.您不能在组件中使用 v-model 。 only form controll select will get this modal value.只有表单控件 select 会得到这个模态值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM