#css #vue.js #bootstrap-vue
#css #vue.js #bootstrap-vue
Вопрос:
Я бы хотел изменить цвет фона в строке таблицы, когда я нажимаю на tr
.
Это код таблицы:
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th><small class="text-muted">#</small></th>
<th>Name</th>
<th>Heading</th>
<th>Productor</th>
</tr>
</thead>
<tbody>
<tr
v-for="company in allCompanies"
:key="company.id"
role="button"
@click="selectCompany(company)"
>
<td class="text-primary">
<small>#{{ company.id }}</small>
</td>
<td class="fw-bold">{{ company.name }}</td>
<td>{{ company.heading }}</td>
<td>
{{ company.productor }}
</td>
</tr>
</tbody>
</table>
</div>
И вот код метода, который я вызываю при событии click:
selectCompany(company) {
this.storeSelectedCompamy(company);
this.fetchShows(company.id);
console.log("change css");
}
Любая помощь будет оценена.
Заранее благодарю
Valerio
Ответ №1:
Посмотрите здесь:
https://v2.vuejs.org/v2/guide/class-and-style.html
Похоже, что каждый <tr>
соответствует a company
, поэтому мой подход заключался бы в том, чтобы привязать состояние каждой строки к соответствующему company
ему свойству as, а затем переключить это свойство selectCompany
. Что-то вроде:
selectCompany(company) {
allCompanies.forEach(_company => _company.isSelected = false);
company.isSelected = true;
}
<tr
v-for="company in allCompanies"
:key="company.id"
:class="company.isSelected ? 'selected' : ''"
role="button"
@click="selectCompany(company)"
>
Комментарии:
1. Мне нравится ваше решение, но я вижу 2 проблемы: 1-я, я теряю: цвет наведения, 2-я, кажется, не работает .. возможно, я допустил некоторые ошибки
2. Потеря
:hover
цвета происходит изstyle
-за того, что атрибут переопределяет ваш CSS. Использование класса должно решить эту проблему. Я обновил свой код. Что касается того, что он не работает, то это может быть по целому ряду причин. Можете ли вы предоставить фрагмент кода для работы?3. Извините, но я плохо говорю по-английски… что именно вы подразумеваете под «фрагментом кода»? Если вставить полный код файла .vue будет достаточно? Спасибо за вашу помощь
4. Нет, не
.vue
файл. В StackOverflow «фрагмент кода» — это фрагмент кода, который будет выполняться StackOverflow. Это значительно облегчает ответы на вопросы. Вот дополнительная информация: stackoverflow.blog/2014/09/16/ …