Vue - wyszukiwanie po kilku kategoriach (radio) oraz nazwie ( input)

0

Potrzebuje porady we frameworku VUE.
Chcialbym napisac apke która bedzie mi sortowała produkty po nazwie oraz po 2 różnych kategoriach. Działa mi z nazwa ( po wpisaniu) oraz z 1 kategoria i nie wiem jak podłaczyć 2 kategorie, aby było to jednolite. Poniżej kod.

 var players = this.players.filter((player) => {
          return player.name.toLowerCase().includes(this.filter.toLowerCase());
        });
      
    if(category === "All") {
				return players;
			} else {
				return players.filter(function(mp) {
					return mp.strCategory === category;
				});
			}

Jak tu dołączyć 2 kategorie oraz 3 aby to było spójne i wyszukiwało łącznie z wszystkimi zaznaczeniami ?

0

Jeśli chodzi o to że produkt ma być w jednej lub drugiej kategorii, to musisz zastosować OR, czyli ||. Zakładając że obiekt player ma kategorie, będzie to wyglądało tak: player.category === 'CatA' || player.category === 'CatB'. Chyba że chodzi Ci o coś innego i nie rozumiem.

0
Aventus napisał(a):

Jeśli chodzi o to że produkt ma być w jednej lub drugiej kategorii, to musisz zastosować OR, czyli ||. Zakładając że obiekt player ma kategorie, będzie to wyglądało tak: player.category === 'CatA' || player.category === 'CatB'. Chyba że chodzi Ci o coś innego i nie rozumiem.

Wytlumacze jeszcze raz:
Mamy liste produktów zaciąganych jsonem. I chce zrobić możliwość filtrowania na żywej liście obecnych produktów.
Filtrowanie ma być 4 elementowe ( po nazwie wpisanej w inputa, po 3 radio buttonach czyli - kategorii, tagu oraz typu)
Zrobiłem jak widać powyżej po nazwie oraz 1 kategorii i działa i teraz chce wpiać w to kolejne 2 kategorie aby to było spójne czyli wybieram po nazwie ford, wybieram kategorie osobowe, potem 2 drzwiowe, potem diesel i na końcu mam wybrana liste z tymi parametrami.
I teraz pytanie jak wpiąć kolejne 2 kategorie do mojego kodu aby to działało ?

0

Zrob to wszystko w jednej metodzie filter:

    var players = this.players.filter((player) =>
          player.name.toLowerCase().includes(this.filter.toLowerCase())
          && (category === "All" || mp.strCategory === category)
          && player.tag === someTag
          && player.type === someType
          // inne warunki
    );

Mozesz to pozniej rozbic na jakies mniejsze funkcje zeby bylo czytelnie. Do wartosci filtrow (ktore sie zmieniaja) powinienies uzywac computed properties.

0

Dzięki mam już prawie wszystko gotowe jest tylko 1 problem i nie mogę sobie poradzić.
Filtry mam zrobione na kategorie oraz searcha jak pisałeś i wyszukuje super. Ale mam kolejny element który jest ulubionymi. I jak np wyszukam coś i kliknę z tabelki produkt, dodany do ulubionych to ma mi się tylko on wyszukiwać a tamto ma zanikać. Jak to sensownie ogarnąć??
Lista wszystkich produktów jest podpięta Od razu pod filtr w taki sposób:

<li v-for="car of filteredList" > 
...
<.li>
i metoda 

	filteredList() {

     ....

    }

i hula bo zwraca Od razu przefiltrowane.
A teraz chce klikająć w element z ulubionych i go wyszukiwać. Jakiś pomysł ??

1 użytkowników online, w tym zalogowanych: 0, gości: 1