2012-10-09 15 views
11

Come posso reindirizzare o aggiornare l'url? Non riesco a trovare alcuna buona documentazione in merito. Fondamentalmente, quello che voglio fare è cambiare i $ routeParams in modo dinamico e aggiornare l'url con il nuovo valore.

Il mio codice è simile al seguente:

if ($routeParams.time) { 
     var url; 
     $routeParams.time = encodeURIComponent(value); 
     url = '/' + $routeParams.time + '/' + 'marketing/networks'; 
     $location.path(url); 
    } else { 
     $routeParams.time = encodeURIComponent(value); 
     url = '/' + $routeParams.time + $location.path(); 
     $location.path(url); 
    } 
+0

https://stackoverflow.com/questions/13636476/angularjs-best-way-to-update-route-parameter –

risposta

23

Dopo aver letto i commenti alla mia risposta, penso che forse non è la risposta giusta per questo caso. Per favore, prima di usare questa soluzione, leggi i commenti e altre risposte. Non sto più utilizzando Angular, quindi non mi sento qualificato per rispondere.

lascio la risposta originale non modificato di seguito:

si modifica la posizione correttamente, ma AngularJS non è rendersi conto che è cambiato. È possibile risolvere il problema utilizzando il metodo 'applicare $' di vostra portata come questo:

$location.path(url); 
$scope.$apply(); 

O come questa:

$scope.$apply($location.path(url)); 

vedere Applicare $ documentazione qui http://docs.angularjs.org/api/ng.$rootScope.Scope

+3

Si potrebbe verificare un errore $ apply già in corso, in tal caso, vedere: http: // stackoverflow. it/questions/18626039/apply-already-in-progress-error, è facilmente risolvibile. – DrCord

+2

Non dovresti mai aver bisogno di chiamare $ apply a meno che tu non stia interagendo con un evento non-Angular. Quando si usa $ applicare considerare l'utilizzo di un approccio di "sicuro applicare": https://coderwall.com/p/ngisma questo non è un caso in cui è necessario utilizzare applicare! – MGot90

+0

solo $ location.path (url) è richiesto .. –

2

si dovrebbe usare https://angular-ui.github.io/

ui-router

quando si utilizza questo si può fare ...

state.go ("route-name", {id: 4});

molto meglio che il costruito nel servizio di routing

La risposta più votato è preoccupante!

Problemi correlati