Содержание
1. Об условных операторах в шаблонах Vue
2. Директивы Vue для условных операторов
Об условных операторах в шаблонах Vue
Часто, когда мы с вами будем писать какой-то код внутри нашего template Vue, нам может потребоваться каким-то образом использовать условные операторы: if, else, else if (базовые команды, которые могут нам встречаться в любом языке программирования).
Мы можем использовать подобные операторы и в шаблонах Vue. Есть соответствующие Vue директивы для этих операторов и они должны применяться к какому-то элементу DOM разметки.
Задача этих условных директив - показать какой-то элемент, либо его скрыть.
Каким образом можно оформить эту директиву в синтаксисе Vue.js.
Для этого, давайте рассмотрим простой пример. Допустим, что у нас есть какой-то компонент.
На уровне данных у этого компонента есть следующее свойство:
data() {
return {
loading: false
}
}
Подробнее про уровень данных Vue компонентов можно посмотреть здесь.
Допустим, что оно показывает состояние загружается ли какой-то элемент либо нет и имеет логическое значение Истина, либо Ложь.
Нам нужно в зависимости от значения этого свойства показывать ту, либо другую информацию.
Директивы Vue для условных операторов
Например, если какой-то блок загружается, мы выводим текст "Загрузка", иначе выводим Контент.
<div v-if="loading">Загрузка</div>
<div v-else>Контент</div>
Директива во Vue, которая отвечает за показ какого-либо контента при выполнении какого-либо условия называется v-if.
Директива, которая выполняется в случае если условие v-if не выполняется, называется v-else.
Т.к. для директивы v-if используется логическое значение, то мы пишем просто v-if="loading", либо мы могли бы написать так v-if="loading === true".
Если бы нужно было проверять соответствие строки какому-то значению, мы могли бы написать следующее выражение v-if="test = 'проба'".
Что произойдет если мы между двумя этими блоками с условными директивами добавим еще один элемент DOM разметки. Например, так:
<div v-if="loading">Загрузка</div>
<div>111</div>
<div v-else>Контент</div>
В этом случае мы получим ошибку, что между элементами с условными директивами не должно быть других элементов.
Сложная условная логика с более одним условием
Теперь давайте рассмотрим более сложную логику: предположим, у нас есть какой-то select, у которого есть какое-либо значение.
data() {
return {
select: 'Выбор 1'
}
}
И нам нужно в зависимости от всех возможных значений свойства select, выводить разные значения в DOM разметке.
Здесь в шаблоне уже будет немного более сложная логика: если это, иначе если то, иначе. В этом случае разметка может выглядеть следующим образом:
<div v-if="select === 'Выбор 1'">Выбор 1</div>
<div v-else-if="select === 'Выбор 2'">Выбор 2</div>
<div v-else>Что-то другое</div>
Таким образом, у нас добавилась еще одна директива, которая называется v-else-if. Она позволяет организовать условие Иначе-Если.
Может быть более одной такой директивы:
<div v-if="select === 'Выбор 1'">Выбор 1</div>
<div v-else-if="select === 'Выбор 2'">Выбор 2</div>
<div v-else-if="select === 'Выбор 3'">Выбор 3</div>
<div v-else>Что-то другое</div>
Отличие от директивы v-show
Во Vue есть похожая на v-if директива, которая называется v-show. На первый взгляд, они очень похожи друг на друга, но есть существенные отличия. Главное их от личие в том, что v-if убирает элемент из DOM разметки документа, а v-show, просто скрывает его. Более подробно об этих отличиях можно почитать в соответствующей статье.
Таким образом, используя операторы v-if, v-else-if и v-else, вы можете писать какую-то условную логику в ваших шаблонах, в том Vue приложении, которое вы разрабатываете.
Чтобы оставить сообщение, зарегистрируйтесь/войдите на сайт через:
Email - зарегистрироваться / войти