73 votes

Redirection vers une nouvelle page dans AngularJS en utilisant $location

Je teste avec le $location AngularJS suivant. Je ne sais pas quel est le problème. Je veux juste vérifier si la redirection fonctionne ou non :

HTML

<body data-ng-controller="MainCtrl">
   Hello {{name}}!
   <button ng-click='go()'>Go</button>
</body>

Code AngularJS

var app = angular.module('location', []);
   app.controller('MainCtrl', function($scope,$routeParams, $location) {
   $scope.name = 'World';
   $scope.go = function() {
   $location.absUrl() = 'http://www.google.com';
   }
});

2 votes

Y a-t-il une faute de frappe ? == il devrait l'être =

1 votes

Vous pouvez toujours utiliser : window.location = ' google.com '

145voto

Fernando Neira Points 1049

$location ne vous aidera pas avec les URL externes, utilisez plutôt le service $window :

$window.location.href = 'http://www.google.com';

Notez que vous pourriez utiliser l'objet window, mais c'est une mauvaise pratique car $window est facilement simulable. alors que la fenêtre ne l'est pas .

2 votes

La solution de $window au lieu de window est une bonne chose, elle devrait être acceptée.

0 votes

$window est un module supplémentaire à ajouter pour utiliser la fonctionnalité $window ?

1 votes

@GK123512648 pas besoin, c'est situé dans le module de base ns comme mentionné dans le document officiel. Référence API

10voto

wdavilaneto Points 61

Si vous voulez changer ng-view, vous devrez utiliser le '#'

$window.location.href= "#operation";

1 votes

Lorsque je l'ai utilisé, il a généré l'erreur suivante (bien qu'il ait fonctionné) : JavaScript runtime error : [$rootScope:infdig] 10 $digest() itérations atteintes. Aborting !

0 votes

Ou vous pouvez simplement appeler $location.path('/whatever/the/path/is')

6voto

davidb583 Points 833

La ligne

$location.absUrl() == 'http://www.google.com';

est erronée. Tout d'abord, == effectue une comparaison, et ce que vous essayez probablement de faire est une affectation, qui se fait avec un simple = et non un double ==.

Et parce que absUrl() getter seulement. Vous pouvez utiliser url(), qui peut être utilisé comme un setter ou un getter si vous le souhaitez.

référence : http://docs.angularjs.org/api/ng .$location

0 votes

Je n'ai pas réussi à utiliser '='. De plus, dans les exemples de la documentation, ils ont spécifié '=='

0 votes

Ne fonctionne pas ! !! absURL est READONLY. Le service $location fournit des méthodes getter pour les parties en lecture seule de l'URL (absUrl, protocol, host, port) et des méthodes getter / setter pour url, path, search, hash.

1voto

DavidLin Points 2883

Ne fonctionne pas ! !! absURL est READONLY. Le service $location fournit des méthodes getter pour les parties en lecture seule de l'URL (absUrl, protocol, host, port) et des méthodes getter / setter pour url, path, search, hash.

Nous devons revenir à la redirection JavaScript brute.

-1voto

shernshiou Points 362

Essayez d'entrer l'url à l'intérieur de la fonction

$location.url('http://www.google.com')

3 votes

Cela ne fonctionne pas (du moins dans Angular 1.2.8), c'est simplement l'ajout de http://www.google.com à l'URL. $window.location.href semble cependant fonctionner.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X