当单击任意按钮时,它们都将变为活动状态。所以我想要的只是被点击的那个应该被改变。
var vm = new Vue({
el: '#toolBtns',
data: {
isActive: false
},
computed: {
activeClass: function () {
return {
active: this.isActive
};
}
}
});<div class="btn-group" role="group" id="toolBtns">
<button class="btn" type="button" @click="isActive = !isActive" :class="activeClass">Btn1</button>
<button class="btn" type="button" @click="isActive = !isActive" :class="activeClass">Btn2</button>
<button class="btn" type="button" @click="isActive = !isActive" :class="activeClass">Btn3</button></div>
发布于 2017-02-06 16:08:11
上面的解决方案的方向是正确的,但它很容易出错,因为它直接使用了索引。正如上面的答案所建议的,做一个v-for基本上可以解决你的问题。
var vm = new Vue({
el: '#toolBtns',
data: {
buttons:[{name:'Btn1',active:false},{name:'Btn2',active:false},
{name:'Btn3',active:false}]
},
methods: {
toggleActiveClass:function(index){
this.buttons[index].active=!this.buttons[index].active;
}
}
});
<div class="btn-group" role="group" id="toolBtns">
<button v-for="(btn, index) in buttons" type="button"
@click="toggleActiveClass(index)"
:class="{active: btn.active}">{{btn.name}}
</button>
</div>https://stackoverflow.com/questions/42062491
复制相似问题