javascript - VueJS 2 v-for表单输入单选按钮检查属性不起作用

标签 javascript html vuejs2

我不知道为什么这不起作用。我检查我到达的索引是否为0,如果是,则将输入框值设置为选中。否则,不要。这似乎是一件非常简单的事情,但我无法理解为什么它被破坏了?

VueJS:

<div class="large-6 columns">
  <h5 class="subheader">Standard templates</h5>
  <div>
    <form>
      <template v-for="(template, index) in systemTemplates">
        <input type="radio" v-bind:id="template.reportId" v-bind:value="template.reportId" v-model="selectedTemplate" v-if="index == 0" checked />
        <input type="radio" v-bind:id="template.reportId" v-bind:value="template.reportId" v-model="selectedTemplate" v-else />
        <label v-bind:for="template.reportId">{{template.title | sanitizeStr}}</label>
      </template>
    </form>
  </div>
</div>
<小时/>

视觉结果图像:

Result

<小时/>

渲染的 DOM 元素:

<div class="large-6 columns">
  <h5 class="subheader">
    Standard skabeloner
  </h5>
  <div>
    <form>
      <input type="radio" id="59a92aafae7a711b3890174e" checked="checked" value="59a92aafae7a711b3890174e">
      <label for="59a92aafae7a711b3890174e">Default PDF report</label>
      <input type="radio" id="59a92aafae7a711b38901753" value="59a92aafae7a711b38901753">
      <label for="59a92aafae7a711b38901753">Default Repeater template: 2 C...</label>
      <input type="radio" id="59a92aafae7a711b38901758" value="59a92aafae7a711b38901758">
      <label for="59a92aafae7a711b38901758">Default PDF with Map</label>
      <input type="radio" id="59a92aafae7a711b38901759" value="59a92aafae7a711b38901759">
      <label for="59a92aafae7a711b38901759">Default Repeater template: 2 C...</label>
      <input type="radio" id="59a92aafae7a711b3890175f" value="59a92aafae7a711b3890175f">
      <label for="59a92aafae7a711b3890175f">Niras standard PDF</label>
      <input type="radio" id="59a92aafae7a711b38901760" value="59a92aafae7a711b38901760">
      <label for="59a92aafae7a711b38901760">Niras standard PDF m. forside</label>
    </form>
  </div>
</div>

最佳答案

使用v-model时,不应使用checked属性,而应将v-model的默认值设置为所需的检查值。

在循环中仅使用一个输入:

<template v-for="(template, index) in systemTemplates">
  <input type="radio" v-bind:id="template.reportId" v-bind:value="template.reportId" v-model="selectedTemplate" />
  <label v-bind:for="template.reportId">{{template.title | sanitizeStr}}</label>
</template>

并将selectedTemplate默认值设置为systemTemplates[0].reportId:

data() {
  return {
    selectedTemplate: this.systemTemplates[0].reportId
  }
}

关于javascript - VueJS 2 v-for表单输入单选按钮检查属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60615313/

相关文章:

javascript - 如何使用JS发送带附件的邮件?

javascript - 不更新分数属性。 (压倒性的分数)

javascript - 悬停时随机更改音频源?

css - 如何居中 float div?

javascript - Vue.js - 更新路由器 View

node.js - 有没有办法解决这个 "npm install"问题?

javascript - 在 JS 上注册按钮点击处理程序的函数

javascript - 使用javascript获取html表单的当前宽度

html - 如何在用户使用 CSS 将鼠标悬停在 HTML 页面上之前隐藏元素?

javascript - VueJS 方法不从 Axios 返回响应