如何在 Vue.js 中设置 optgroup 选择标签?

Posted

技术标签:

【中文标题】如何在 Vue.js 中设置 optgroup 选择标签?【英文标题】:How to set optgroup select label in Vue.js? 【发布时间】:2017-10-04 09:36:15 【问题描述】:

我正在尝试在 Vue 中创建一个选择组。

小提琴:https://jsfiddle.net/Tropicalista/vwjxc5dq/

我试过了:

<optgroup v-for="option in options" v-bind:label="option">
  <option v-for="sub in option" v-bind:value="option.value">
    sub.text 
  </option>
</optgroup>

我的数据:

data: 
  selected: 'A',
  options: 
    First: [
       text: 'One', value: 'A' ,
       text: 'Two', value: 'B' 
    ],
    Second: [
      text: 'Three', value: 'C' 
    ]
  

【问题讨论】:

【参考方案1】:

根据上面的答案。我通过在 optgroup 标签中添加标签来改进 optgroup 标签

<optgroup v-for="(group, name) in optionGroups" :key="name" :label="`$name`">
                
 <option v-for="option in group" :key="option.value">
    option.text 
    </option>
 </optgroup>

【讨论】:

【参考方案2】:

您将label 属性绑定到option,这是一个数组。您想要的是绑定到对象的键。

您可以通过在v-for 指令中指定第二个参数来获取每个选项的键:

<optgroup v-for="(option, key) in options" v-bind:label="key">

我还将您的 options 属性重命名为 optionGroups 以避免进一步混淆:

data: 
  selected: 'A',
  optionGroups: 
    First: [
       text: 'One', value: 'A' ,
       text: 'Two', value: 'B' 
    ],
    Second: [
       text: 'Three', value: 'C' 
    ]
  

这样,模板会更有意义:

<optgroup v-for="(group, name) in optionGroups" :label="name">
  <option v-for="option in group" :value="option.value">
     option.text 
  </option>
</optgroup>

【讨论】:

以上是关于如何在 Vue.js 中设置 optgroup 选择标签?的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js:如何在 .vue 模板文件中的 vue 方法中设置数据变量

如何在vue js中设置默认日期

如何在 Vuex 商店的 Vue.js 组件中设置动态样式

如何使用 css 或 js 根据 vue.js 中的条件在打印页面中设置不显示?

如何在 vue js 中设置输入表单控件默认聚焦,直到输入值?

如何在 vue.js 2 中设置 v-select 中选择的选项值?