Привязка класса vue к переменной объекта

У меня есть проект, в котором мне нужно выполнить проверку формы. Если поля введены неправильно, объект formErrors получит строковую переменную с правильным текстом ошибки. Таким образом, в случае электронной почты строка ошибки будет помещена в formErrors.email. Эта строка может быть распечатана в элементе p, который показывает ошибку, даже видимость этого элемента p может быть показана или скрыта в зависимости от состояния formErrors.email, например v-if = "formErrors.email".

Но когда я пытаюсь придать элементу ввода красный цвет границы с помощью :class = "{formErrors.email : text-red-primary}", линтер выдает ошибку Parsing error: Unexpected token .. Но как включить привязку этого класса к переменной внутри объекта formErrors.

<input
          type = "text"
          name = "email"
          id = "email"
          v-model = "email"
          placeholder = "Email address"
          class = "w-full px-4 py-3 border rounded-lg text-black-primary focus:outline-none text-sm"
          :class = "{formErrors.email : text-red-primary}"
        />
        <p v-if = "formErrors.email" class = "text-red-primary text-xs mt-1 ml-1">{{formErrors.email}}</p>
      </div>
5 способов использования оповещений, предупреждений, ошибок, сообщений об успехе в Bootstrap
5 способов использования оповещений, предупреждений, ошибок, сообщений об успехе в Bootstrap
Bootstrap - это популярный front-end фреймворк, который делает веб-разработку проще и быстрее. Использование Bootstrap растет по мере того, как все...
Как сделать меню гамбургера только на CSS
Как сделать меню гамбургера только на CSS
Недавно я делал небольшие изменения на своем сайте , когда я вновь обнаружил меню гамбургера, которое я сделал для него. В нем нет ничего особенного,...
Полеты по миру фронтенда, том 9
Полеты по миру фронтенда, том 9
Мир фронтенда снова растет быстрее, чем население Земли. За всеми новостями и тенденциями в нем становится почти так же трудно уследить, как за...
Создание фильтров для вашего сайта
Создание фильтров для вашего сайта
Фильтры - удобный инструмент в арсенале веб-дизайнера. Они позволяют изменять элементы на странице с помощью всего нескольких строк кода. Эти...
Библиотека Bootstrap
Библиотека Bootstrap
Bootstrap - это бесплатный набор инструментов для разработки веб-приложений с открытым исходным кодом, разработанный компанией Twitter. Написанный на...
Уроки CSS 28
Уроки CSS 28
Здравствуйте, дорогие читатели, я Ферди Сефа Дюзгюн, сегодня мы продолжим с вами уроки css.
0
0
348
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете создать вычисляемое свойство, скажем, isEmailInValid, которое возвращает true/false

И используйте его в таком шаблоне

:class = "{'text-red-primary': isEmailInValid}"

Динамический класс применяется только тогда, когда условие истинно.

Вы можете проверить документы vue для получения дополнительной информации https://v2.vuejs.org/v2/guide/class-and-style.html

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

Ваша привязка класса в настоящее время обратная: ключ должен быть именем класса, а значение должно быть истинным/ложным (например, непустая строка будет правдивой). Кроме того, ключ (text-red-primary) необходимо заключить в кавычки, поскольку он содержит не буквенно-цифровые символы (-):

<!-- ❌ -->
<input :class = "{ formErrors.email : text-red-primary }">

<!-- ✅ -->
<input :class = "{ 'text-red-primary' : formErrors.email }">

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