使用$ location重定向到AngularJS中的新页面


72

我正在测试以下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';
   }
});

2
有错字吗==,应该是=
Chandermani

1
你总是可以使用:window.location的=“ google.com
扎克雅阁

Answers:


144

$ location不能帮助您使用外部URL,请改用$ window服务:

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

请注意,您可以使用window对象,但这是不好的做法,因为$ window可以轻松模拟,而window不能


2
$ window而不是window可以很好地触摸。这应该是公认的答案。
Nuriel 2014年

$ window是要使用$ window功能添加的额外模块吗?
Gavindra Kalikapersaud 2014年

1
@ GK123512648不需要,它位于官方API参考中
Fernando Neira

1
我不得不使用$window.location = ...,没有.href
weltschmerz

10

如果要更改ng-view,则必须使用“#”

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

1
当我使用它时,它会产生以下错误(尽管可以正常工作):JavaScript运行时错误:[$ rootScope:infdig]达到10个$ digest()迭代。流产!
steveareeno

或者您也可以直接致电$ location.path('/ whatever / the / path / is')
Willa 2015年

6

线

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

是错的。首先==做一个比较,您可能想做的是一个赋值,它是简单=而不是double ==。

并且因为仅absUrl()吸气剂。您可以使用url(),如果需要,可以将其用作设置器或获取器。

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


我没有使用'='。此外,在文档示例中,他们还指定了'=='
Kiran Kumar 2013年

不会工作!absURL为READONLY。$ location服务为URL的只读部分(absUrl,协议,主机,端口)提供了getter方法,并为url,路径,搜索,哈希提供了getter / setter方法
David Lin

6

可能对您有帮助!

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>

0

这对于指令内的我来说是有效的,并且无需刷新baseurl(只需添加端点)即可使用。适用于具有路由机制的Single Page Apps。

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

-1

尝试在函数内输入网址

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

3
这是行不通的(至少在Angular 1.2.8中),它只是附加http://www.google.com到URL。 $window.location.href似乎正在工作。
Mendhak 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.