v-for
v-for
Принимает:
Array | Object | number | string | Iterable
Многократно отрисовывает элемент или блок шаблона, основываясь на переданных данных. Значение директивы должно следовать синтаксису alias in expression — в alias будет элемент текущей итерации:
<div v-for="item in items">
{{ item.text }}
</div>Отображение массива элементов с помощью v-for
v-forДиректива v-for используется для отрисовки списка элементов на основе массива данных. У директивы v-for особый синтаксис записи: item in items, где items — исходный массив, а item — ссылка на текущий элемент массива:
<ul id="example-1">
<li v-for="item in items">
{{ item.message }}
</li>
</ul>var example1 = new Vue({
el: '#example-1',
data: {
items: [
{ message: 'Foo' },
{ message: 'Bar' }
]
}
})Результат:

Внутри блока v-for доступны свойства из области видимости родителя. У v-for также есть второй опциональный параметр с индексом текущего элемента.
Результат:

Вместо in разделителем можно использовать of, как в итераторах JavaScript:
v-for для объекта
v-for для объектаv-for можно также использовать для итерирования по свойствам объекта:
Результат:

Можно использовать второй аргумент для получения имени свойства (ключа объекта):
Результат:

И третий — для индексов:
Результат:

v-for и диапазоны
v-for и диапазоныВ v-for можно передать целое число. В этом случае шаблон будет повторён указанное число раз.
Результат:
v-for и тег template
v-for и тег templateПодобно использованию с v-if, также можно использовать тег <template> с директивой v-for для отображения блока из нескольких элементов.
Компоненты и v-for
v-forМожно использовать v-for на компонентах, как и на обычных элементах:
Однако, в компонент никакие данные не передаются автоматически, поскольку у компонентов изолированные области видимости. Для передачи итерируемых данных в компонент необходимо явно использовать входные параметры:
Причина, почему item не передаётся в компонент автоматически, в том, что это сделает компонент жёстко связанным с логикой работы v-for. Но если указывать источник данных явно, компонент можно будет использовать и в других ситуациях.
v-for и v-if
v-for и v-ifНе рекомендуется использовать вместе v-if и v-for.
Когда присутствуют вместе на одном элементе, v-for имеет больший приоритет, чем v-if. Поэтому v-if будет выполняться для каждой итерации цикла. Это полезно, когда нужно отобразить только некоторые элементы списка, например:
В результате будут отображены только задачи, которые ещё не выполнены.
Если необходимо по условию пропускать выполнение всего цикла, переместите v-if на внешний элемент (или на <template>). Например:
Last updated
Was this helpful?