Svojstva “route” objekta

Vue rute

Objekat “route” sadrži sve informacije u vezi trenutne rute, kojim se uvek može pristupiti iz aplikacije preko nekog od njegovih svojstava:

  1. $route.path – String koji je jednak putanji trenutne rute, uvek se rešava kao apsolutna putanja (npr. “/user/profile”).
  2. $route.params – Objekt u vidu parova ključ/vrednost koji se koristi za vraćanje podataka iz dinamičkih ruta. Ako nema parametara, vrednost će biti prazan objekat.
  3. $route.query – Objekt u vidu parova ključ/vrednost koji se koristi za vraćanje podataka query string-a.
  4. $route.fullPath – full URL uključujući query i hash.
  5. $route.matched – Niz koj sadrži zapise o putanji trenutne rute
  6. $route.name – Ime trenutne rute ako mu je definisano
  7. $route.redirectedFrom – Ime rute sa koje izvršena redirekcija ako postiji redirekcija

Query string

Query string je deo URL adrese koji je dodat na kraj standardne adrese nakon znaka pitanja (?) i sadrži podatke koji su obično u obliku parova key/value.

Preuzimanje podataka iz query string-a

Koristeći svojstvo rute “$route.query” možemo dobiti šta je poslato kroz query string u okviru URL adrese. Znak pitanja ne ulazi u sastav query string-a. Objekat $route.query sadrži key/value parove.

Primer

Za url adresu: /foo?user=1:

Ubacivanje podataka u query string

Jedan od načina za ubacivanje query parametara u rutu je kroz atribut “to”<router-link> taga:

Može da se koristi i objektna sintaksa:

Imenovane rute (named routes)

Vue ruter nudi mogućnost kreiranja tzv. imenovanih ruta, koje nam olakšavaju pozivanje tih ruta, jer se umesto putanje može koristiti dodeljeno ime. Imenovanje rute se vrši definisanjem svojstva “name”.

routes.js

Nakon definisanja svojstva “name”, ruti možemo da pristupimo veoma lako koristeći samo svjosto “name” bez korišćenja svojstva “path”:

ili

Dinamičke rute

U slučaju da imamo potrebu za velikim brojem stranica ali sa istom strukturom, gde se menjaju samo podaci na predvidjenim mestima (klasičan primer za to je “user stranica”, koja koristi isti template za sve user-e, ali sa različitim sadržajem), bilo bi glupo da za svaku stranicu pravimo novu rutu.
Iz tog razloga se kreiraju tzv. “dinamičke rute” koje će koristiti istu komponenti, ali sa različitim sadržajem koji zavisi od vrednosti koja se prosledi kao dinamički deo url adrese.

Definisanje dinamičke rute

U okviru Vue.js dinamički deo rute se definiše tako što se doda promenjiva kojoj prethodi dvotačka:

routes.js

Prikupljanje podataka iz dinamičke rute

Da bismo u okviru Vue.js iskoristili dinamički parametar iz rute, potrebno je da koristimo this.$route.params.dinamičikaPromenjiva (npr. this.$route.params.id).

Primer

U ovome primeru promenjiva “id” čuva vrednost dinamičkog dela rute.

Primer prikupljanja podataka iz dinamičke rute

pattern matched path $route.params
/user/:id /user/pera { id: 'pera' }

Primer prikupljanja podataka kod slučaja dve nestovane dinamičke rute:

pattern matched path $route.params
/user/:id/post/:post_id /user/pera/post/123 { id: 'pera', post_id: 123 }

watch “$route” objekat

U trenutku kada se već nalazimo na nekoj dinamičkoj ruti i želimo da menjanjem samo dinamičkkog dela url adrese učitamo novu stranicu (npr. idemo sa jednog user profila na drugi), javlja se problem jer Vue.js neće da učita novi sadržaj. Drugim rečima promena samo dinamičkog dela url-a neće naterati Vue.js da ponovo učita istu komponentu sa izmenjenim podacima.
Da bi smo rešili problem, moramo da pratimo (watch) $route objekat i na taj način obezbedimo da aplikacija reaguje i na promenu dinamičkog dela url adrese. Nakon promene “watcher” bi pozivao odgovarujuću callback funkciju.

Primer

U ovome primeru se prati promena $route objekta, i nakon promene poziva callback funkcija koja ažurira svojstvo “id” data objekta.

Dinamičke rute & <router-link>

Za izlistavanje dinamičkih linkova je potrebno da prosledimo dinamičku rutu kroz atribut “params”.

Primer

Za dinamiču rutu:

se koristi sledeći kod za izlistavanje gde je neophodno da pored atributa “name” prosledimo dinamičku rutu kroz atribut “params” (promenjiva u dinamičkoj ruti je predstavljena sa :id):

Ugneždene rute

U slučaju kada stanica ima pod-stranice, onda želimo da kada korisnik dodje na glavnu stranu da im budu ponudjena nova navigacija (tzv. “pod-meni”) koji im omogućava da posete pod-stranice (npr.za glavnu stranu “user” podemeni sa stranicama “user-profil” i “user-edit)”. Pored toga želimo i da se URL adresa promeni u tom maniru. Da bismo to postigli, možemo koristiti ugnježene rute (eng. nested routes) )unutar komponente koja čini glavnu stranu.
Ugnježdene rute se dobijaju dodavanjem novog svojstva u ruti za glavnu stranicu pod nazivom “children”. Ovo svojvo je niz objekata koje sadrže pod-rute:

Zatim je potrebno u okviru template glavne stranice (u ovome primeru “user”) da se ubacuje željna navigacija sa komponentom <router-view></router-view> :

Sada možemo da definišemo navigaciju ka ovim pod rutama:

Primer


Redirekcija rute

Globalna redirekcija

Preusmeravanje (redirekcija) podrazumeva da aplikacija preusmeri korisnika koji želi da poseti stranicu sa jednom rutom ( /a ), na neku drugu stranicu (npr. “b”). Nakon prosledjivanja na drugu stranicu aplikacija će promeniti i URL adresu u odgovarajuću (/b).

Sintaks kod imenovane (“named”) rute izgleda ovako:

Programirana redirekcija

Pod programiranom redirekcijom se podrazumeva slučaj kada želimo otvorimo odredjenu stranicu ali pod odredjenim uslovima (primer: otvaranje nove stranice nakon submita forme)

Primer $router.push()

U ovome primeru programerski definišemo promenu rute nakon klika na dugme sa metodom $router.push()

Primer $router.go()

U ovome primeru programerski definišemo promenu rute nakon klika na dugme sa metodom $router.go()

NAPOMENA:
Treba naglasiti da $router objekt ima i metode: $router.back() i$router.forward() za koje nije čak potrebno ni proslediti argument.

Podelite:

Ostavite komentar