使用 Vuejs 和 v-model 预先检查复选框

ott*_*tz0 -1 vue.js vuejs2

我有一系列v-model与值绑定的复选框。

但是,当您进入该页面时,我需要预先选中一些复选框。我无法使用:checked绑定,因为我正在使用v-model并且我需要 v-model 将值传递给我的checkedNames数组。

<div id='example-3'>
  <input type="checkbox" id="jack" value="Jack" v-model="checkedNames" PRE-CHECK-THIS-CHECKBOX>
  <label for="jack">Jack</label>
  <input type="checkbox" id="john" value="John" v-model="checkedNames">
  <label for="john">John</label>
  <input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
  <label for="mike">Mike</label>
  <br>
  <span>Checked names: {{ checkedNames }}</span>
</div>
Run Code Online (Sandbox Code Playgroud)
new Vue({
  el: '#example-3',
  data: {
    checkedNames: []
  }
})
Run Code Online (Sandbox Code Playgroud)

小智 5

我采取了一些自由来修改一些东西,但这得到了你所追求的:

<div id='example-3'>
  <div v-for="(item, index) in names" :key="index">
    <input type="checkbox" :id="item.name" v-model="item.checked">
    <label :for="item.name">{{ item.name }}</label>
  </div>
  <span>Checked names: {{ checkedNames }}</span>
</div>
Run Code Online (Sandbox Code Playgroud)
new Vue({
  el: '#example-3',
  data() {
    return {
      names: [{
        name: 'jack',
        checked: true
      }, {
        name: 'john',
        checked: false
      }, {
        name: 'mike',
        checked: false
      }]
    }
  },
  computed: {
    checkedNames () {
       return this.names.filter(item => item.checked).map(name => name.name)
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

还有一个工作小提琴:https : //jsfiddle.net/aj6apozq/8/