我想进行重定向,重新加载整页,以便在页面加载时刷新我的Web服务器中的cookie。 window.location = "/#/Next"
和window.location.href = "/#/Next"
无法正常工作,他们执行的Angular路线无法点击服务器。
在Angular控制器中发出完整服务器请求的正确方法是什么?
答案 0 :(得分:180)
适用于<a>
代码:
您需要在target="_self"
代码
<a>
有三种情况,AngularJS将执行整页重新加载:
<a href="/ext/link?a=b" target="_self">link</a>
<a href="http://angularjs.org/">link</a>
<a href="/not-my-base/link">link</a>
使用javascript :
$location
服务允许您仅更改网址;它不允许您重新加载页面。当您需要更改网址并重新加载网页或导航到其他网页时,请使用较低级别的API:$window.location.href
。
请参阅:
答案 1 :(得分:32)
我们遇到了同样的问题,使用JS代码(即不是来自HTML锚点)。这就是我们解决这个问题的方法:
如果需要,虚拟通过$location
服务改变当前网址。如果您的目标只是当前网址的变体,那么这可能很有用,这样您就可以利用$location
辅助方法。例如。我们运行$location.search(..., ...)
只是更改查询字符串参数的值。
如果需要,使用当前$location.url()
构建新的目标网址。为了工作,这个新的必须包括模式,域和端口之后的所有内容。所以例如如果你想搬到:
http://yourdomain.com/YourAppFolder/YourAngularApp/#/YourArea/YourAction?culture=en
然后您应该将URL设置为:
var destinationUrl = '/YourAppFolder/YourAngularApp/#/YourArea/YourAction?culture=en';
(也是前导'/'
)。
在低级分配新的目标网址:$window.location.href = destinationUrl;
强制重新加载,仍处于低级别:$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();