Sto usando angolare in un'applicazione che è, fondamentalmente, una tabella con risultati di ricerca. accesso a questa tabella può essere raggiunto tramite un URL come http://myapp/?client=clientName
Un controller angolare è istanziata per la tavola, tra le altre cose, per aprire una finestra di dialogo modale (anche angolare-based con bootstrap-ui) con i dettagli della riga.
Questi dettagli di riga sono portati tramite un servizio che ha alcune funzionalità comuni per entrambi i controller: quello per il tavolo e quello per il modale.
Ora, all'interno di questo servizio, ho il seguente frammento di codice per recuperare:
service.fetchRelatedElements = function(element, cb) {
var url = '/search.json?results=20&type='+element.type;
if ($location.search()['client']) {
url += '&client=' + $location.search('client');
}
return doFetch(url, cb); // actual server json GET
};
L'obiettivo è quello di sapere se la tabella ha già questa specifica client
parametro impostato come un filtro.
Se inserisco un punto di interruzione all'inizio di questa chiamata, vedo che $location.absUrl()
restituisce l'URL del browser corrente (che, nel mio caso, ha il parametro client
a cui sono interessato).
Ma $location.search()
restituisce un oggetto vuoto.
Sto inserendo il servizio $ posizione all'interno del mio servizio con i valori predefiniti (ovvero, non configurandolo tramite una chiamata .config()
). E, come doc dice:
Il $ servizio di localizzazione analizza l'URL nella barra degli indirizzi del browser (in base sulla window.location) e rende l'URL disponibili per l'applicazione .
Mi manca qualcosa? Non dovrebbe l'URL, a questo punto, essere analizzato?
Grazie!
UPDATE: sono riuscito a farlo funzionare. Il problema era esattamente che non stavo configurando affatto il servizio. L'ho fatto perché pensavo che in quel modo ci sarebbero state delle impostazioni predefinite, ma sembra che non sia così che funziona.
Puoi condividere l'output di $ location.absUrl()? Questo ha un odore come un problema di regexp. – Jmr
Sicuro! È 'http: // localhost: 3000/results? Utf8 =% E2% 9C% 93 & client = mond & type = & submittedLowerBound = & submittedUpperBound = & commit = Filter'. È un'app per rails sul back-end. – Pipetus
Puoi condividere del codice per la tua soluzione? Sto avendo lo stesso problema dove $ location.search() restituisce {} – sthomps