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