web-dev-qa-db-ja.com

$ locationを使用してAngularJSの新しいページにリダイレクトします

次のAngularJSの$ locationでテストしています。私はこれに何の問題はありません。リダイレクトが機能しているかどうかを確認したいだけです:

HTML

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

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は外部URLには役立ちません。代わりに$ windowサービスを使用してください。

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

Windowオブジェクトを使用することもできますが、$ windowは簡単にモック可能 windowはそうではありません であるため、悪い習慣です。

145
Fernando Neira

Ng-viewを変更する場合は、「#」を使用する必要があります

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

それはあなたを助けるかもしれません!

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;
    };
});

HTMLコードサンプル

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

この線

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

間違っている。最初の==は比較を行い、おそらくあなたがやろうとしているのは割り当てです。

そして、absUrl()ゲッターのみ。 url()を使用できます。これは、必要に応じてセッターまたはゲッターとして使用できます。

参照: http://docs.angularjs.org/api/ng 。$ location

6
bdavidxyz

これはディレクティブ内で私のために働き、baseurlを更新することなく動作します(エンドポイントを追加するだけです)。ルーティングメカニズムを備えたシングルページアプリに適しています。

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