vue.js - 如何使用多个按钮设置活动
问题描述
我有三个使用 v-for 在 div 中生成的按钮。当单击一个按钮时,我希望该特定按钮获取活动类以及先前活动的类以删除该类。我知道如何使用 v-bind 一键完成。但我只是不确定三个的逻辑。
我想过拥有三个 IsActiveButton1、IsActiveButton2 和 IsActiveButton3。然后尝试将类绑定到那些。但是由于我使用的是 v-for 我不知道如何告诉它要绑定到哪个 IsActive 。我也觉得有一种更有效的方法。
我玩过 vuejs 的单选按钮切换,但是它非常缺乏我在按钮上需要的样式功能。
<template>
<div id="basemap_container">
<button v-for="option in options"
:key="option.value"
:class="option.class"
@click="UpdateBaseMap(option.value)"
>{{option.text}}
</button>
<button
id="collapse_basemap"
class="btn_group_basemap"
@click="CollapseBaseMap()"
>»
</button>
</div>
</template>
<script>
export default {
name:"BaseMapToggle",
data(){
return{
current_basemap: "streets",
basemap_changer_active: true,
options:[
{text: "satellite", value:"satellite",class: "btn_group_basemap"},
{text: "topo", value:"topo",class: "btn_group_basemap"},
{text: "streets", value:"streets",class: "btn_group_basemap active"}
]
}
},
methods:{
UpdateBaseMap(value)
{
this.current_basemap = value;
this.$store.commit('UpdateBaseMap',this.current_basemap);
},
CollapseBaseMap()
{
this.basemap_changer_active = !this.basemap_changer_active;
const changer = document.querySelector("#collapse_basemap");
}
}
}
</script>
解决方案
你可以使用你的current_basemap
变量来做到这一点:
<button v-for="option in options"
:key="option.value"
:class="option.class + `${option.value === current_basemap ? ' active ' : ''}`"
@click="UpdateBaseMap(option.value)">
{{option.text}}
</button>
推荐阅读
- c# - Unity3D旋转物体的最快方法
- reactjs - 总金额为 0$ 的条带支付请求
- javascript - 为什么在 Vue.js 中使用 v-if、v-else、@mouseover 和 @mouseleave 时,每个文本都会显示在 img hover 上?
- java - 如何提示用户输入数组值并在java中创建数据类型
- android - 如何估计神经网络在手机上的运行时间?
- java - 在 bash 脚本中使用 bash 变量作为 java 参数
- mongodb-query - 当所有结果都匹配时,计算使用 $match 过滤的 $lookup 和 $unwind 文档而不删除父文档
- excel-formula - 如何使用excel公式找到字符串中的最后一个数字
- c++ - gRPC 中可能存在内存泄漏
- spring - 如何在“TransactionTemplate”上设置“noRollbackFor”?