所有复选框都显示为已选中。 VueJs VueMaterial

时间:2017-05-30 13:17:49

标签: javascript vue.js vuejs2 vue-component vue-material

我试图只检查一个复选框,但是当我检查它时,其余部分也会被检查。为什么会这样?关于此的任何文件?

<md-layout v-for="Location in Locations" :key="Location.id">
  <md-checkbox v-model="checkbox" class="md-warn">{{ Location.city }}</md-checkbox>
</md-layout>
data () {
  return {
    checkbox: false,
    Locations: [{
      id: 1,
      city: '1'
    }, {
      id: 2,
      city: '2'
    }, {
      id: 3,
      city: '3'
    }, {
      id: 4,
      city: '4'
    }, {
      id: 5,
      city: '5'
    }, {
      id: 6,
      city: '6'
    }]

1 个答案:

答案 0 :(得分:2)

由于每个复选框的v-model是变量checkbox,因此该变量的值将绑定到每个组件。您希望每个复选框组件的v-model都有自己的变量来引用。

您可以将checkbox布尔值转换为checkboxes对象,并为每个位置ID添加索引键:

data() {
  return {
    checkboxes: {
      1: false,
      2: false,
      3: false,
      4: false,
      5: false,
      6: false,
    },
    ...

然后在您的模板中,按checkboxes

引用每个Location.id属性值
<md-checkbox v-model="checkboxes[Location.id]" class="md-warn">

或者,如果您不介意影响Locations数据属性,则只需绑定到每个位置的selected属性:

<md-checkbox v-model="Location.selected" class="md-warn">