javascript - 如何向 vue.js 中的复选框元素添加/删除类?
问题描述
在我的 Vue.js 组件中,我想为单击的任何复选框添加背景颜色:
<div class="langs-container">
<div class="lang">
<input type="checkbox" value="English" class="mycheckbox" v-model="languages">
English
</div>
<div class="lang">
<input type="checkbox" value="French" class="mycheckbox" v-model="languages">
French
</div>
</div>
因此,假设我们要添加green
到每个活动的复选框(选中)并在未选中时将其删除:
.green {
background-color: green;
}
实现这一目标的惯用方法是什么?
更新:languages
是一个数组,所以我不能定义English
和French
默认为假。
解决方案
给每个复选框一个v-model
用于类绑定。
通过使用input
as的对象来区分这两个复选框v-model
:
<input v-model="languages.english"...>
基于此使用类绑定:
<div class="lang" :class="{ 'green': languages.english }">
更新:
根据评论中的要求,这里是languages
作为数组(而不是对象)的解决方案,它不再是“干净”的:
您需要一个额外的方法来返回true
或false
基于检查的值。
new Vue({
el: "#app",
data() {
return {
languages: []
}
},
methods: {
isChecked(value) {
return this.languages.includes(value)
}
}
})
.green {
background-color: green;
}
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
<div id="app">
<div class="langs-container">
<div class="lang" :class="{ 'green': isChecked('English') }">
<input type="checkbox" value="English" class="mycheckbox" v-model="languages"> English
</div>
<div class="lang" :class="{ 'green': isChecked('French') }">
<input type="checkbox" value="French" class="mycheckbox" v-model="languages"> French
</div>
</div>
</div>
推荐阅读
- python-3.x - Coral EdgeTPU PWM 输出低平均电压问题与伺服电机
- php - Laravel 路由缓存
- python - 将列表的第一个元素与列表中的其他第一个元素匹配
- java - 按下按钮时如何删除布局
- c#-4.0 - 为什么我们在嵌套的 foreach 循环中这样做?我无法理解我迷路了
- python - 如何在 python 脚本中运行 python 脚本
- python - 如何使用python在列表中逐行插入字符串
- arduino - Arduino / DigiSpark / ATtiny85 - 接收和解析多条数据
- java - ArrayList 对象如何存储在 Java 中的 HashSet 中?
- openssl - 为什么 openssl 生成的签名看起来与 pyjwt 生成的签名不同