Добавить класс CSS к элементу

У меня есть модель, т.е. вот такая:

[{
    "Name" : "Foo",
    "CssClass" : "class1"
},
{
    "Name" : "Bar",
    "CssClass" : "class2"
}]

Что представлено с использованием следующего шаблона:

<li v-for = "foobar in model">
    <span class = "otherclass anotherclass">{{foobar.Name}}</span>
</li>

Как я могу добавить свойство CssClass к диапазону?

Я знаю, что вы можете использовать :class = "{ active: isActive }" (согласно документация), но здесь используется предопределенный класс с именем active, тогда как я хочу добавить имя класса из модели.

Я пробовал использовать <span class = "otherclass anotherclass" :class = "foobar.CssClass">, но это вообще не добавляло CssClass к class.

Как я могу сделать так, чтобы <span> эффективно отображался как <span class = "otherclass anotherclass class1"> (для первой записи модели)? И как я могу использовать значение по умолчанию, если CssClass не определен?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
0
49
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете добавить класс так

<li v-for = "foobar in model">
    <span :class = "foobar.CssClass" class = "otherclass anotherclass">{{foobar.Name}}</span>
</li>

Раньше я сталкивался с той же проблемой. Во время рендеринга все три класса объединятся в один class = "my_class_from_foobar otherclass anotherclass"

Я уже пробовал с :class = "foobar.CssClass", но это не дало никакого результата. (Вероятно, я должен был указать это в вопросе, поэтому сделаю это после этого комментария)

GTHvidsten 20.10.2018 22:18

Кажется, моя ошибка не передавалась .CssClass от одной модели к другой. Я попытался воссоздать его в jsfiddle, но, что бы я ни делал, он всегда работал ... что привело меня к моим собственным моделям. Спасибо за вклад :)

GTHvidsten 21.10.2018 12:34

Вы можете передать объект или массив в :class. Вы также можете использовать class и :class вместе, и Vue разрешит их правильно без проблем:

<li v-for = "foobar in model">
    <span class = "otherclass anotherclass" :class = "[foobar.CssClass]">{{foobar.Name}}</span>
</li>

Я уже пробовал с :class = "foobar.CssClass", но это не дало никакого результата. Я также пробовал использовать синтаксис вашей скобки :class = "[foobar.CssClass]", но это тоже не дало результатов

GTHvidsten 20.10.2018 22:17
<li v-for = "foobar in model">
  <span :class = "'otherclass anotherclass ' + foobar.CssClass">{{foobar.Name}</span>
</li>

<li v-for = "foobar in model">
  <span :class = "foobar.CssClass" class = "otherclass anotherclass">{{foobar.Name}</span>
</li>

Оба должны работать

Другие вопросы по теме