我正在尝试重新加载页面并将其重定向到另一个页面, 或者只是将其重定向到另一个,但我不能通过
来做到这一点window.location.href
或
windown.location
因为我有一个Angular单页应用程序捕获路径而不是重新加载页面直接打开部分
我确实尝试过 -
window.location.reload(true)
但它重新加载页面并且无法更改网址 我也试过 -
window.location.assign
和
window.location.replace
有没有办法做到这一点?
答案 0 :(得分:4)
有三种情况,AngularJS将执行整页重新加载:
包含目标元素的链接
示例:
<a href="/ext/link?a=b" target="_self"> link </a>
转到其他域的绝对链接 示例:
<a href="http://angularjs.org/">link</a>
以&#39; /&#39;开头的链接当定义base时,会导致不同的基本路径 示例:
<a href="/not-my-base/link">link</a>
<强>更新强>
使用javascript:
$ location服务允许您仅更改URL;它不允许您重新加载页面。当您需要更改URL并重新加载页面或导航到其他页面时,请使用较低级别的API:$ window.location.href。
请参阅:
答案 1 :(得分:1)
要重定向到其他页面,您应该使用
$window.open('url', '_self')
将再次加载您的网页。
答案 2 :(得分:0)
试
window.location = url;
请记住,网址必须具有协议,即http://或https://
答案 3 :(得分:0)
所以你需要更改URL末尾的哈希值?即从#/
到#/otherpage/
?
如果是,location.hash = "/otherpage/";
答案 4 :(得分:0)
根据https://docs.angularjs.org/guide/$location,如果AngularJS使用HTML5模式,它永远不会在现代浏览器中执行整页重新加载。
HTML5模式
在HTML5模式下,$ location服务getter和setter通过HTML5历史记录API与浏览器URL地址进行交互。这允许使用常规URL路径和搜索段,而不是它们的hashbang等价物。如果浏览器不支持HTML5历史记录API,则$ location服务将自动回退到使用hashbang网址。这使您不必担心显示您的应用的浏览器是否支持历史记录API; $ location服务透明地使用最佳可用选项。
在旧版浏览器中打开常规网址 - &gt;重定向到hashbang URL 在现代浏览器中打开hashbang URL - &gt;重写为常规URL 请注意,在此模式下,Angular会拦截所有链接(受以下“Html链接重写”规则的约束)并以从不执行整页重新加载的方式更新网址。
(强调我的)
由于Hashbang模式是默认模式,因此代码必须在某处设置HTML5模式。