2015-09-17 20 views
19

Ho visto queste chiamate:

$location.url('/path/to/something/' + id + '/index'); 

e

$location.path('/path/to/something/' + id + '/index'); 

sembra che stanno facendo la stessa cosa .
Dalla documentazione ho trovato che l'URL è ad es. /path?a=b#hash e il percorso è una parte dell'URL.

C'è qualche differenza quale di questi setter da usare (o $location.path$location.url) in caso dello stesso argomento?

+0

non se non si usano stringhe di ricerca. Non sono inclusi in 'path' – charlietfl

risposta

36

$location.path restituisce la parte dell'URL dopo la barra NON inclusi i parametri della stringa di ricerca (dopo il punto interrogativo)

$location.url restituisce l'intero URL dopo la barra, inclusi i parametri della stringa di ricerca.

Per esempio, supponiamo di avere questo URL

http://example.com/#/some/path?foo=bar&baz=xoxo

$location.url rendimenti /some/path?foo=bar&baz=xoxo

$location.path restituisce /some/path

Queste due funzioni agiscono come sia setters e getters.

Url è fondamentalmente Path + search strings. Nel tuo caso, non ci sono parametri di ricerca, quindi entrambi restituiranno la stessa cosa.

+0

Grazie! Per favore, nota che sto chiedendo degli setter. – naXa

+1

Poiché si utilizzano gli stessi setter senza parametri di ricerca, non vi sono differenze. –

2

$location.path() consente di estrarre una parte specifica a seconda della stringa di ricerca dopo la barra ed escludendo i parametri che immagino. E se non si dispone di una stringa di ricerca, funziona allo stesso modo del metodo $location.url().

+0

Grazie! Per favore, nota che sto chiedendo degli setter. – naXa