web-dev-qa-db-fra.com

Redirection vers une nouvelle page dans AngularJS en utilisant $ location

Je teste avec l’emplacement AngularJS $ suivant. Je ne sais pas quel est le problème avec cela. 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';
   }
});
72
Kiran Kumar

$ 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 pouvez utiliser l'objet window, mais c'est une mauvaise pratique car $ window est facilement mockable alors que window ne l'est pas .

145
Fernando Neira

Si vous voulez changer de vue, vous devrez utiliser le '#'

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

Cela pourrait vous aider!

Échantillon de code AngularJs

var app = angular.module('urlApp', []);
app.controller('urlCtrl', function ($scope, $log, $window) {
    $scope.ClickMeToRedirect = function () {
        var url = "http://" + $window.location.Host + "/Account/Login";
        $log.log(url);
        $window.location.href = url;
    };
});

Exemple de code HTML

<div ng-app="urlApp">
    <div ng-controller="urlCtrl">
        Redirect to <a href="#" ng-click="ClickMeToRedirect()">Click Me!</a>
    </div>
</div>
6
Anil Singh

La ligne

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

est faux. First == fait une comparaison, et ce que vous essayez probablement de faire est une assignation, qui est avec simple = et non double ==.

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

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

6
bdavidxyz

cela a fonctionné pour moi dans une directive et fonctionne sans rafraîchir le baseurl (ajoute juste le point final). Bon pour les applications à une seule page avec mécanisme de routage.

  $(location).attr('href', 'http://localhost:10005/#/endpoint') 
0