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

Odpowiedz Nowy wątek
2019-01-26 17:24
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 ?

edytowany 4x, ostatnio: Łukasz Filip Gucma, 2019-01-26 17:47

Pozostało 580 znaków

2019-01-26 17:30
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.


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.

Pozostało 580 znaków

2019-01-26 17:45
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 ?

edytowany 1x, ostatnio: Łukasz Filip Gucma, 2019-01-26 17:46

Pozostało 580 znaków

2019-01-26 17:57
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.


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.

Pozostało 580 znaków

2019-01-27 19:33
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ł ??

edytowany 1x, ostatnio: Łukasz Filip Gucma, 2019-01-27 19:33

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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