AngularJS – 我如何做一个完整的页面加载redirect?

我想做一个完整的页面重新加载的redirect,以便来自我的Web服务器的cookies在页面加载时被刷新。 window.location = "/#/Next"window.location.href = "/#/Next"不起作用,他们做了一个Angular路由,它没有命中服务器。

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

对于<a>标签

你需要在你的<a>标签上贴上target="_self"

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

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

使用javascript

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

看到:

我们有同样的问题,工作从JS代码(即不是从HTML锚)。 这是我们如何解决的:

  1. 如果需要,通过$location服务实际上改变当前URL。 如果你的目的地只是当前URL的一个变体,这可能是有用的,所以你可以利用$location帮助器方法。 例如,我们运行$location.search(..., ...)来改变查询string参数的值。

  2. build立新的目标url,如果需要,使用当前的$location.url() 。 为了工作,这个新的必须包括架构,域和端口后的一切。 所以,比如,如果你想转移到:

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

    那么你应该设置URL为:

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

    (还有领先的'/' )。

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

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

search后,给予打击和审判会议,我能够解决它首先指定url

 $window.location.href = '/#/home/stats'; 

然后重新加载

 $window.location.reload(); 

我遇到过同样的问题。 当我使用window.location$window.location或者甚至是<a href="..." target="_self">路由不刷新页面。 所以caching的服务使用这不是我想要在我的应用程序。 我通过在window.location之后添加window.location.reload()来解决这个问题,强制页面在路由之后重新加载。 虽然这个方法好像加载了两次页面。 可能是一个肮脏的伎俩,但它做的工作。 这就是我现在的样子:

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