@Intelix

Как передать в filter массив аргументов?

Здравствуйте!
У меня есть такое computed свойство:
filterReadyItems() {
      return this.allItems.filter(item => item.status === '1');
},

Нужно, чтобы из метода, можно было менять условие этого computed свойства.

Я думаю нужно объявить в data() массив свойств, который бы менялся в методах и засунуть его в filterReadyItems но не знаю как это сделать, типа того:
data() {
    return {
      allItems: [],
      filterParam: [{item.status === '1'}]
    }
  },
computed: {
    filterReadyItems() {
      return this.allItems.filter(item => this.filterParam); //Тут после выполнения метода changeFilter() должно быть item => item.status === '1' && item.price === 100
    }
 },
methods: {
   changeFilter(){
        this.filterParam.push(item.price === 100);
    }
}

Подскажите пожалуйста как это можно сделать?
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Сделайте свои "аргументы" функциями, которые будут использоваться в качестве значений параметров метода filter, например:

data: () => ({
  items: [ ... ],
  filters: [
    item => item.status === 'hello, world!!',
    item => item.price > 666,
    item => item.text.includes('fuck the world'),
  ],
}),
computed: {
  filteredItems() {
    return this.filters.reduce((items, filterFn) => items.filter(filterFn), this.items);
  },
},
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы