2012-10-09 6 views
11

Jak mogę przekierować lub zaktualizować adres URL? Nie mogę znaleźć żadnej dobrej dokumentacji na ten temat. Zasadniczo, chcę zmienić dynamicznie $ routeParams i zaktualizować adres URL o nową wartość.

Mój kod wygląda następująco:

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 –

Odpowiedz

23

Po przeczytaniu komentarzy do mojej odpowiedzi, myślę, że być może nie jest to właściwa odpowiedź w tej sprawie. Przed użyciem tego rozwiązania przeczytaj komentarze i inne odpowiedzi. Nie używam już Angulara, więc nie czuję się kwalifikowany do odpowiadania.

zostawiam oryginalną odpowiedź niezmodyfikowanej poniżej:

Zmieniasz lokalizację prawidłowo ale angularjs to nie zdając sobie sprawy, że to zmieniło. można rozwiązać problemu, korzystając z metody „$ zastosowanie” swojego zakresu tak:

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

Albo tak:

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

Zobacz $ zastosować dokumentację tutaj http://docs.angularjs.org/api/ng.$rootScope.Scope

+3

Może wystąpić błąd $ apply in progress, jeśli tak, zobacz: http: // stackoverflow. com/questions/18626039/apply-already-in-progress-error, można go łatwo naprawić. – DrCord

+2

Nigdy nie powinieneś dzwonić za pomocą $ apply, chyba że jesteś w kontakcie ze zdarzeniem nieagresywnym. Podczas korzystania $ zastosować rozważyć zastosowanie podejścia „bezpieczne zastosowanie”: https://coderwall.com/p/ngisma To nie jest przypadek, gdy trzeba użyć zastosować! – MGot90

+0

wymagane jest tylko $ location.path (url) .. –

2

należy użyć https://angular-ui.github.io/

ui-router

podczas korzystania z tego można zrobić ...

state.go ("nazwa-trasy", {id: 4});

znacznie lepiej niż wbudowany w usługi routingu

Najbardziej głosowało odpowiedź jest niepokojące!

Powiązane problemy