【问题标题】:How do I use labels for a set of dynamically created radio buttons?如何为一组动态创建的单选按钮使用标签?
【发布时间】:2018-02-28 22:57:01
【问题描述】:

我在 Vuejs 2 中有一个动态创建的单选按钮列表:

<div class="form-check" v-for="design in designs" :key="design.id">
                    <input class="form-check-input" type="radio" :value="design" v-model="selectedDesign" :id="design.id" :name="design.id">
                    <label class="form-check-label" v-bind:for="design.id">{{design.name}}</label>
                  </div>

但是,“v-bind:for”不起作用——硬编码“for”不会让我链接到动态创建的单选按钮。 有谁知道如何在动态创建的标签中使用“for”?

【问题讨论】:

  • 这似乎是一个非常广泛的问题,无论如何尝试为每个动态创建的单选按钮获取参考。

标签: vuejs2


【解决方案1】:

您的 sn-p 有效。

仔细检查元素的 id,你可能有重复的 id,导致 labels 出现故障。

查看下面的演示。有两个收音机可以工作(所以你知道你的 sn-p 工作)和一个不工作(因为有一个重复:&lt;div&gt; 与收音机的 id 相同)。

new Vue({
  el: '#app',
  data: {
    designs: [
      {id: 1, name: "I'm the label for the radio with id=1 (will work)"},
      {id: 2, name: "I'm the label for the radio with id=2 (won't work because another element with id=2 exists)"},
      {id: 3, name: "I'm the label for the radio with id=3 (will work)"}
    ],
    selectedDesign: null
  }
})
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.min.js"></script>

<div id="app">
  <div id="2">I am a div with id=2.</div>
  <br><br>
  <div class="form-check" v-for="design in designs" :key="design.id">
    <input class="form-check-input" type="radio" :value="design" v-model="selectedDesign" :id="design.id" :name="design.id">
    <label class="form-check-label" v-bind:for="design.id">{{design.name}}</label>
  </div>
  
</div>

【讨论】:

  • 嘿,就是这样!我在页面的其他地方有一个重复的 id,这导致了一个问题。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
相关资源
最近更新 更多