【问题标题】:Vue.js - conditionally assign a CSS classVue.js - 有条件地分配一个 CSS 类
【发布时间】:2020-03-22 21:42:07
【问题描述】:

在使用 NativeBase 作为组件库的 VueNative 项目中(因此标签以 nb- 为前缀),我有以下代码。这是在<template> 标签中,是包含导航按钮的footer.vue 文件的一部分。当用户按下它并使其变为活动状态时,此逻辑可以很好地更改选项卡(按钮)的颜色。

<nb-button :active="tab2" :onPress="toggleTab2" :style="{ backgroundColor: (activeTab == 'tab2') ? 'rgb(117, 110, 116)' : 'rgb(82, 74, 81)' }">
  <nb-text class="text">Instructions</nb-text>
</nb-button>

我想用:class 替换:style,所以文件中的所有nb-button 标记都引用类名,而不是每个标记中硬编码的背景颜色。这是我尝试过的 -
&lt;template&gt; 标签中:

<nb-button :active="tab2" :onPress="toggleTab2" :class="{ (activeTab == 'tab2') ? "active" : "inactive" }">
  <nb-text class="text">Instructions</nb-text>
</nb-button>

&lt;style&gt; 标签中:

.inactive {
  background-color: rgb(82, 74, 81);
}
.active {
  background-color: rgb(117, 110, 116);
}

但是,在代码编辑器中,:class 行下方会显示一条红色波浪线,上面写着“'v-bind' 指令需要一个属性值”。如何修改它才能工作?

编辑 根据this 的帖子,我还尝试了以下方法:

<nb-button :active="tab2" :onPress="toggleTab2" :style="(activeTab == 'tab2') ? 'active' : 'inactive'">

但它的行为就像它忽略了类名。当用户选择tab2时,会显示默认的活动颜色,而不是active样式中指定的颜色。

【问题讨论】:

    标签: javascript css vue.js vuejs2 vue-native


    【解决方案1】:

    您没有转义:class="{ (activeTab == 'tab2') ? "active" : "inactive" }" 中的"",因此应将" 替换为' 并根据this 更改语法:

    :class="{ active: (activeTab == 'tab2'), inactive: (activeTab !== 'tab2')}"
    

    【讨论】:

    • 我做了推荐的更改;但是,它仍然显示带有消息'v-bind' directives require an attribute value 的红色波浪线。
    • 试试这个:class="(activeTab == 'tab2') ? 'active' : 'inactive'"
    • 好的,我试过了。编辑器中不再有红色波浪线或错误消息,但它无法识别活动类。相反,它显示的是默认的活动颜色。
    • 基于this:class="{ 'active' : '(activeTab == 'tab2'),'inactive' :(activeTab !== 'tab2')}"怎么样
    • 是的!稍微改变一下语法,:class="{ active: (activeTab == 'tab2'), inactive: (activeTab !== 'tab2')}",它就可以工作了!非常感谢您的坚持。
    猜你喜欢
    • 1970-01-01
    • 2014-06-29
    • 2020-01-10
    • 2018-12-15
    • 2018-04-23
    • 2021-12-28
    • 2017-01-04
    • 2019-11-04
    • 1970-01-01
    相关资源
    最近更新 更多