AngularJS - 如何在整页加载时进行重定向?

时间:2013-04-14 18:51:12

标签: angularjs routing

我想进行重定向,重新加载整页,以便在页面加载时刷新我的Web服务器中的cookie。 window.location = "/#/Next"window.location.href = "/#/Next"无法正常工作,他们执行的Angular路线无法点击服务器。

在Angular控制器中发出完整服务器请求的正确方法是什么?

5 个答案:

答案 0 :(得分:180)

适用于<a>代码

您需要在target="_self"代码

上添加<a>

有三种情况,AngularJS将执行整页重新加载:

  • 包含目标元素的链接
    示例:<a href="/ext/link?a=b" target="_self">link</a>
  • 转到其他域的绝对链接
    示例:<a href="http://angularjs.org/">link</a>
  • 以'/'开头的链接,在定义base时会导致不同的基本路径 示例:<a href="/not-my-base/link">link</a>

使用javascript

$location服务允许您仅更改网址;它不允许您重新加载页面。当您需要更改网址并重新加载网页或导航到其他网页时,请使用较低级别的API:$window.location.href

请参阅:

答案 1 :(得分:32)

我们遇到了同样的问题,使用JS代码(即不是来自HTML锚点)。这就是我们解决这个问题的方法:

  1. 如果需要,虚拟通过$location服务改变当前网址。如果您的目标只是当前网址的变体,那么这可能很有用,这样您就可以利用$location辅助方法。例如。我们运行$location.search(..., ...)只是更改查询字符串参数的值。

  2. 如果需要,使用当前$location.url()构建新的目标网址。为了工作,这个新的必须包括模式,域和端口之后的所有内容。所以例如如果你想搬到:

    http://yourdomain.com/YourAppFolder/YourAngularApp/#/YourArea/YourAction?culture=en

    然后您应该将URL设置为:

    var destinationUrl = '/YourAppFolder/YourAngularApp/#/YourArea/YourAction?culture=en';

    (也是前导'/')。

  3. 低级分配新的目标网址:$window.location.href = destinationUrl;

  4. 强制重新加载,仍处于低级别:$window.location.reload();

答案 2 :(得分:12)

在搜索并提供点击和试用会话后,我可以通过首先指定网址

来解决它
$window.location.href = '/#/home/stats';

然后重新加载

$window.location.reload();

答案 3 :(得分:9)

我有同样的问题。当我使用window.location$window.location或甚至<a href="..." target="_self">时,路线不会刷新页面。因此使用缓存的服务,这不是我想要的应用程序。我通过在window.location.reload()之后添加window.location来解决此问题,以强制页面在路由后重新加载。这个方法似乎加载了两次页面。可能是一个肮脏的把戏,但它做的工作。这就是我现在的方式:

  $scope.openPage = function (pageName) {
      window.location = '#/html/pages/' + pageName;
      window.location.reload();
  };

答案 4 :(得分:0)

尝试一下

$window.location.href="#page-name";
$window.location.reload();