Vue. js - условно назначить класс CSS - PullRequest
0 голосов
/ 23 марта 2020

В проекте VueNative, который использует NativeBase в качестве библиотеки компонентов (таким образом, теги с префиксом nb-), я имею следующий код. Он находится в тегах <template> и является частью файла нижнего колонтитула. vue, который содержит кнопки навигации. Этот лог c работает нормально, чтобы изменить цвет вкладки (кнопки), когда пользователь нажимает ее, и она становится активной.

<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>

Я хотел бы заменить :style на :class поэтому все теги nb-button в файле относятся к именам классов, а не к жестко заданным цветам фона в каждом теге. Вот что я пробовал -
в тегах <template>:

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

в тегах <style>:

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

Однако в редакторе кода красная волнистая линия отображается под :class строкой, которая говорит, что «директивам v-bind требуется значение атрибута». Как это можно изменить, чтобы работать?

Редактировать На основе этой публикации Я также попробовал следующее:

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

Но это действует как будто игнорирует имена классов. Когда пользователь выбирает tab2, отображается активный цвет по умолчанию, а не цвет, указанный в стиле active.

1 Ответ

3 голосов
/ 23 марта 2020

Вы не можете избежать "" внутри :class="{ (activeTab == 'tab2') ? "active" : "inactive" }", поэтому следует заменить " на ' и изменить синтаксис на основе this :

:class="{ active: (activeTab == 'tab2'), inactive: (activeTab !== 'tab2')}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...