在 Vuejs 中切换两个类

Posted

技术标签:

【中文标题】在 Vuejs 中切换两个类【英文标题】:Toggle of TWO classes in Vuejs 【发布时间】:2017-11-20 12:02:10 【问题描述】:

我已经尝试了几个小时才能在 Vue JS 中添加/删除两个类。

文档示例仅显示如何切换一个。

我有一个按钮,单击该按钮我想将班级更改为:active toggle-ontoggle-off

我可以打开和关闭“活动”,但我似乎无法添加/删除第二类。

按钮如下所示:

<button v-on:click="toggleOnTop" id="toggleTopButton" v-bind:class="toggleActive"></button>

还有我的数据:

data: () => (
  toggleActive: 
    active: true,
    'toggle-on': true
  
)

但它仍然只适用于这两个。如何反向应用“toggle-off”?

【问题讨论】:

【参考方案1】:

您可能希望为此使用计算属性或对象语法,假设您的方法在数据中切换布尔值:

data () 
  return 
    isActive: false
  

methods: 
  toggleOnTop () 
    this.isActive = !this.isActive
  

简短的形式是添加以下类绑定:

< ... v-bind:class="'active toggle-on': isActive, 'toggle-off': !isActive">

另一种方法是使用计算属性来设置你想要的类:

computed: 
  toggleActive () 
    return 
      'active': this.isActive,
      'toggle-on': this.isActive,
      'toggle-off': !this.isActive
    
  

【讨论】:

【参考方案2】:

还要知道,您可以在绑定时将三元运算符传递给类属性。例如:

<i :class="['fa', isHappy ? 'fa-smile' : 'fa-frown']"></i>

这只是避免了如上所述在对象中重复使用相同的布尔值,特别是如果您需要将多个类绑定到每个状态 - 就像这样:

<i :class="['fa', isHappy ? 'fa-smile active' : 'fa-frown']"></i>

【讨论】:

以上是关于在 Vuejs 中切换两个类的主要内容,如果未能解决你的问题,请参考以下文章

Vuejs 动态切换类在 Laravel Blade 模板中不起作用

在Vuejs上切换单选按钮后选定的文件消失

VueJS 将类切换到表中的特定元素

Vue JS 3 绑定类不更新类

如何切换 VueJs 组件的可见性?

Vuejs2 - 如何将两个数组中的元素与计算属性进行比较?