2013-07-07 15 views
70

L'app My Angular consente all'utente di caricare un elemento e, quando ciò accade, desidero impostare una stringa di query che contenga l'ID dell'oggetto in modo che se l'utente aggiorna la pagina (o desideri collegarsi ad essa), l'URL è già impostato (è già presente il codice che carica l'elemento se l'ID è presente in $ routeParams).Come posso impostare un parametro di query in AngularJS senza fare un percorso?

Come posso impostare quel parametro di ricerca senza causare un percorso? Ci sono altre cose nella pagina che verranno ripristinate (incluso un plug-in che dovrà ricaricare tutti i suoi dati) se si verifica un percorso, quindi è importante che cambino solo i parametri della query.

In breve, quando carico voce 123, tutto quello che voglio che accada è che l'URL cambia da:

www.myurl.com/#/Items

a:

www.myurl.com/#/Items?id=123

senza alcun routin g aver luogo.

Qual è il modo migliore per farlo?

risposta

161

Nella configurazione $routeProvider impostato reloadOnSearch su false:

$routeProvider 
    .when('/items', { 
    controller: 'ItemsCtrl', 
    templateUrl: '/templates/items', 
    reloadOnSearch: false 
    }, 
    ... 
); 

e nel vostro uso del controller $location.search() per impostare il id param:

$location.search('id', 123); 
+4

ho avuto alcuni davvero strano comportamento quando si imposta la query stringa .''reloadOnSearch: false''' è stata la chiave per me. –

Problemi correlati