美文网首页
vue列表渲染 点击添加状态

vue列表渲染 点击添加状态

作者: Kathy丶Andy | 来源:发表于2019-06-14 14:30 被阅读0次

第一种写法

<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)
  }
}

相关文章

网友评论

      本文标题:vue列表渲染 点击添加状态

      本文链接:https://www.haomeiwen.com/subject/dlzufctx.html