2014-10-16 4 views
9

Ich sende eine Anfrage an den Server und möchte bedingt auf eine andere Seite (nicht eckig) umleiten, nachdem die Antwort empfangen wurde. So geschieht die Navigation innerhalb von then Teil eines Versprechens.

Ich habe versucht:

$location.path(url) 

und

$window.location.href = url; 
$windo.location.reload(); 

nichts funktioniert.

Aber wenn ich einen dieser beiden Anrufe mit setTimeout(navigate,0) Umbruch tritt auf.
Scheint wie Angular Guards URL während Digest-Zyklus.

Kann jemand erklären oder teilen die Links erklären, was wirklich passiert.

+1

Wahrscheinlich einige eckige Digest bezogene Sache. Das sollte gut funktionieren, denke ich: 'window.location.href = url;'. – dfsq

+1

@dfsq Ja, das funktioniert =) Aber es ist wie "Verwenden Sie die Kraft, Luke" =) –

+0

Cool, froh zu helfen! – dfsq

Antwort

1

Nach der Änderung zu tun, und bevor das Versprechen Handler endet, versuchen zu tun:

$scope.$$phase || $scope.$apply(); 

, dass die Änderungen bevölkern sollte.

+0

Nun, es wird innerhalb eines Digest-Zyklus ausgeführt. Nach mehreren Neustarts und CTrl + F5 hat es einfach mit dem einfachen Update von $ window.location.href funktioniert. Verstehe nicht wieso. –

Verwandte Themen