VueJS - Toggle v-for Classes

by BaronGrivet

HTML

<div id="app">
  <ol>
    <li v-for="option in filterOptions" :key="option.index" :class="{ active: option.active }" @click="toggleFilter(option)">
      <span :data-id="option.id">
        {{ option.name }} - {{ option.active }}
      </span>
    </li>
  </ol>
</div>

CSS

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

#app {
  background: #fff;
  border-radius: 4px;
  padding: 20px;
  transition: all 0.2s;
}

li {
  margin: 8px 0;
  cursor: pointer;
}

li.active {
  color: #00f;
  font-weight: 600;
}

h2 {
  font-weight: bold;
  margin-bottom: 15px;
}

Vue

new Vue({
  el: "#app",
  data: {
    filterOptions: [
    {name:"Trash Panda",active:false},
    {name:"Fart Squirrel",active:false},
    {name:"Danger Noodle",active:true},
    {name:"Sea Flap Flap",active:false},
    {name:"Murder Log",active:false}
    ]
  },
  methods: {
    toggleFilter: function (option) {
      option.active = !option.active
      console.log(option.name + ' : ' + option.active)
    }
  }
})