Для написания сортировки галереи работы в Vue.js, вам понадобится несколько шагов. Ниже приведен подробный инструктаж:
- Во-первых, определите компонент галереи работы. Создайте новый компонент с помощью следующего кода:
<template> <div> <div> <button @click="sortByPrice">Сортировать по цене</button> <button @click="sortByDate">Сортировать по дате</button> </div> <div> <div v-for="item in sortedItems" :key="item.id"> <!-- Вывод элемента галереи работы --> </div> </div> </div> </template> <script> export default { data() { return { items: [ // Массив элементов галереи работы ] }; }, methods: { sortByPrice() { this.items.sort((a, b) => a.price - b.price); }, sortByDate() { this.items.sort((a, b) => new Date(a.date) - new Date(b.date)); } }, computed: { sortedItems() { return [...this.items]; } } }; </script>
- Во-вторых, укажите элементы, которые должны быть отсортированы. В
data
вы должны объявить массивitems
, содержащий элементы галереи работы. Каждый элемент должен содержать информацию о работе, такую как название, цена и дата.
- Затем, создайте методы для сортировки. В приведенном выше коде,
sortByPrice
иsortByDate
- это методы сортировки по цене и дате соответственно. Они используют встроенный методsort
JavaScript для сортировки элементов массиваitems
. Сортировка осуществляется путем сравнения значений цены и даты элементов.
- Также стоит отметить, что в computed свойстве
sortedItems
мы возвращаем клон массиваitems
, чтобы не изменять исходные данные при сортировке. Это работает через использование оператора spread...this.items
.
- В вашем шаблоне компонента используйте
v-for
для отображения каждого элемента галереи работы. В приведенном выше кодеv-for="item in sortedItems"
создает цикл по каждому элементу в массивеsortedItems
, который был отсортирован с помощью методовsortByPrice
илиsortByDate
.
Вот и всё! Теперь у вас должна быть рабочая сортировка галереи работы в вашем компоненте Vue.js. Вы можете модифицировать этот код в соответствии с вашими конкретными требованиями для работы и отображения элементов галереи.