vue列表渲染 点击添加状态

2019-06-14  本文已影响0人  Kathy丶Andy

第一种写法

<div v-for="(item, index) in items" :key="index">
  <span :class="{active: item.checked}" @click="test(item)">{{item.name}}</span>
</div>

data() {
  checked: [],
  items: [
    {
      name: 'aa',
      checked: false
    },
    {
      name: 'aa',
      checked: false
    }
  ]
}

test (item) {
  if (item.checked) {
    item.checked = !item.checked
  } else {
    item.checked = true
  }
}

第二种写法

<div v-for="(item, index) in items" :key="index">
  <span :class="{active: checked.includes(index)}" @click="test(index)">{{item.name}}</span>
</div>

test (index) {
  let idx = this.checked.indexOf(index)
  if (idx > -1) {
    this.checked.splice(idx, 1)
  } else {
    this.checked.push(index)
  }
}
上一篇 下一篇

猜你喜欢

热点阅读