Как сделать отфильтрованный список более динамичным в Vue

1

Поэтому у меня есть список элементов, которые я просматриваю с помощью v-for. Перед тем, как распечатать список, он фильтруется значением, использующим метод .filter(). Также для изменения между отфильтрованными значениями используется v-on:click. Мой вопрос: есть ли способ сделать фильтр более динамичным? потому что, если предопределенные значения, которые я установил для фильтрации списка, будут изменены, фильтр больше не будет работать...

Я предоставил JSFiddle здесь. Итак, вы могли видеть, с чем я работаю.

Мои две основные области, вызывающие озабоченность, - это v-on и вычисленные методы.

<li class="d-flex justify-content-between" v-on:click="engagementFilterKey = 'recieved'">
     <div class="ml-3">
     <span class="text-muted">Received</span>
     </div>
</li>
<li class="d-flex justify-content-between" v-on:click="engagementFilterKey = 'preparation'">
     <div class="ml-3">
     <span class="text-muted">Preparation</span>
     </div>
</li>

Вот вычисленные методы

computed: {
    engagementFilter() {
      return this[this.engagementFilterKey];
    },
    recieved() {
        return this.allEngagements.filter((engagement) => engagement.status == 'Recieved')
    },
    preparation() {
        return this.allEngagements.filter((engagement) => engagement.status == 'Preparation')
    },

Пожалуйста, просмотрите скрипт, который я разместил в начале этой дискуссии...

  • 0
    Вы имеете в виду, что хотите обрабатывать любой статус фильтра?
Теги:
arrays
vue.js
vuex

1 ответ

2
Лучший ответ

обновленный

Идея заключается в создании уникального набора статусов из множества взаимодействий и динамического отображения списка кнопок. Каждая кнопка назначает engagementFilterKey которая может использоваться для фильтрации совпадающих статусов из списка всех обязательств.

Код решения - JSFiddle

  • 0
    метод отлично работает, однако у меня есть 2 проблемы. Порядок, в котором перечислены состояния, является случайным, и я не уверен, что есть способ это исправить. Другой случай, когда страница загружается впервые, списка нет. Я должен нажать, прежде чем появился отфильтрованный список. Первоначально он использовал engagementFilterKey чтобы показать первый выбранный фильтр. Я что-то пропустил?
  • 0
    Я обновил JSFiddle, чтобы изначально скрыть список, установив пустое строковое значение для начального ключа фильтра: engagementFilterKey: '' . Что касается требования заказа, у вас есть массив статусов. Есть много способов упорядочить эти значения. Их можно упорядочить по количеству объектов определенного статуса в списке, по именам и т. Д. Если вы хотите иметь индивидуальный порядок, это, безусловно, можно сделать. Но для этого требуется определение схемы заказа. Например, список всех доступных значений на основе того, какой новый массив должен быть отсортирован.
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню