vue,通过 v-model 绑定来自所选选项的两个值

Posted

技术标签:

【中文标题】vue,通过 v-model 绑定来自所选选项的两个值【英文标题】:vue, binding two values from selected option by v-model 【发布时间】:2020-03-15 10:23:42 【问题描述】:

我有一个工作的 vue/laravel 组件,我在选择框中使用 v-for 循环,以便从 vue 数组创建选项。这可以正常工作。

我的 v-bind 将所选选项的 id 正确绑定到 featureID,但这是我的问题:

我怎样才能将 feature.feature_name 绑定到另一个 prop,比如 featureName?

我看不到如何将所选选项的 ID 和名称绑定到两个不同的道具?

<select v-model="featureID">
  <option v-for="feature in features" v-bind:value="feature.id">
    @ feature.name 
  </option>
</select>

data: 
    featureID: [''],
    features: [id:1, name: 'test', id:2, name: 'good]

【问题讨论】:

我假设你的意思是 feature.name 和 feature.id,对吧?这就是与您的数据集匹配的内容。 对不起@user1015214,错字。刚刚修好了 【参考方案1】:

你不能在一个选项标签中传递多个值,但你可以做的是传递整个对象作为值。你只需要传递feature 作为道具

<select v-model="featureID">
  <option v-for="feature in features" v-bind:value="feature">
    @ feature.name 
  </option>
</select>

data: 
    featureID: [''],
    features: [id:1, name: 'test', id:2, name: 'good]

然后您将拥有整个对象,并且您将能够获取 id 和/或名称。

这是JSFiddle

【讨论】:

【参考方案2】:

您可以使用所选列表项的索引来代替id 的功能。

<select v-model="selectedIdx">
  <option v-for="(feature, index) in features" v-bind:value="index" :key="index">
    @ feature.name 
  </option>
</select>
data: 
  selectedIdx: null,
  features: [
    id:1, name: 'test',
    id:2, name: 'good',
  ]
,
computed: 
  selectedFeature() 
    return this.features[this.selectedIdx]
   

访问selectedFeature 你已经选择了特征对象。

【讨论】:

以上是关于vue,通过 v-model 绑定来自所选选项的两个值的主要内容,如果未能解决你的问题,请参考以下文章

Vue表单控件绑定

Vue中Select下拉框用v-model绑定了一个值,用v-for遍历出来多个,改变一个下拉框的选项,其他的都会改变

vue3自定义组件使用v-model实现双向数据绑定

(十二)Vue3.x中重写的v-model

vue3.x script setup实现v-model父子组件双向绑定

vue 表单之通过v-model绑定单选按钮radio