【问题标题】:Vue JS radio input "checked" not working with v-modelVue JS无线电输入“已检查”不适用于v-model
【发布时间】:2020-12-30 09:08:13
【问题描述】:

我在数据库中有用户数据。我想在数据库中使用用户数据设置默认检查单选按钮。没有 v-model 它可以正常工作,但是如果我将 v-model 放在输入端,“检查”将不起作用。有人有建议吗?

我的代码是:

<template>
 <div v-for="user in users">
  <input v-model="theUser.role" type="radio" id="admin" value="admin" :checked="user.role === 'admin'">
  <label for="admin">Admin</label><br>
  <input v-model="theUser.role" type="radio" id="user" value="user" :checked="user.role === 'user'">
  <label for="role">User</label>
 </div>
</template>

export default {
  data: () => ({
    theUser: {
      role: '',
      active: '',
    },
  }),
};

【问题讨论】:

  • 让theUser.role='admin'或theUser.role='user'的初始值

标签: vue.js radio v-model


【解决方案1】:

因为您将无线电输入的值定义为admin 或user。

所以你必须让theUser.role='admin' 或theUser.role='user'。

对于您的情况,一种解决方案应该是首字母 theUser.role 循环 users 然后在 life hook=created() 中分配正确的默认值。

喜欢下面的演示:

new Vue ({
  el:'#app',
  data () {
    return {
      users: [
        {role: 'admin', name: 'a'},
        {role: 'user', name: 'b'}
      ],
      theUsers: []
    }
  },
  created () {
    this.theUsers = this.users.map((user) => {
      return {
        role: user.role
      }
    })
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>
<div id="app">
 <div v-for="(user, index) in users" :key="index">
  <input v-model="theUsers[index].role" type="radio" id="admin" value="admin">
  <label for="admin">Admin ({{user.name}})</label><br>
  <input v-model="theUsers[index].role" type="radio" id="user" value="user">
  <label for="role">User ({{user.name}})</label>
 </div>
 <pre>{{theUsers}}</pre>
</div>

【讨论】:

  • 哦,我明白了。如果我使用 v-model,则无需使用检查。非常感谢。
猜你喜欢
  • 2018-06-29
  • 2019-04-30
  • 2019-11-08
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 2021-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多