【问题标题】:Redirect to new Page in AngularJS using $location使用 $location 重定向到 AngularJS 中的新页面
【发布时间】:2013-09-23 09:41:30
【问题描述】:

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

【问题讨论】:

  • ==有错别字,应该是=
  • 你总是可以使用:window.location = 'google.com'

标签: angularjs redirect


【解决方案1】:

线

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

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

而且因为 absUrl() 只是吸气剂。您可以使用 url(),如果需要,它可以用作 setter 或 getter。

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

【讨论】:

  • 我没有使用'='。同样在他们指定的文档示例中 '=='
  • 不行!!! absURL 是只读的。 $location 服务为 URL 的只读部分(absUrl、协议、主机、端口)提供 getter 方法,为 url、path、search、hash 提供 getter/setter 方法
【解决方案2】:

尝试在函数内部输入url

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

【讨论】:

  • 这不起作用(至少在 Angular 1.2.8 中),它只是将 http://www.google.com 附加到 URL。 $window.location.href 似乎在工作。
【解决方案3】:

$location 不会帮助您处理外部 URL,请改用 $window 服务:

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

请注意,您可以使用 window 对象,但这是不好的做法,因为 $window 很容易模拟 whereas window is not

【讨论】:

  • 用 $window 而不是 window.这应该是公认的答案。
  • $window 是要添加以使用 $window 功能的额外模块吗?
  • @GK123512648 不需要,官方API reference提到的位于核心ns模块中
  • 我必须使用$window.location = ...,没有.href
【解决方案4】:

如果你想改变 ng-view,你必须使用 '#'

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

【讨论】:

  • 当我使用它时,它会产生以下错误(尽管它有效):JavaScript 运行时错误:[$rootScope:infdig] 10 $digest() 达到了迭代。中止!
  • 或者你可以直接调用 $location.path('/whatever/the/path/is')
【解决方案5】:

也许对你有帮助!

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】:

    这在指令中对我有用,并且无需刷新 baseurl(只需添加端点)即可工作。适用于具有路由机制的单​​页应用程序。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-07
      • 1970-01-01
      • 2011-11-25
      • 2014-08-28
      • 2017-07-25
      • 2013-09-07
      相关资源
      最近更新 更多