如何在 Angular js 中禁用哈希重定向
Posted
技术标签:
【中文标题】如何在 Angular js 中禁用哈希重定向【英文标题】:how to disable hash redirect in angular js 【发布时间】:2016-11-12 00:57:06 【问题描述】:我有一个如下网址
http://www.something.com/sometest/test/#registration
一些逻辑是基于 IE 的#registration 编写的。
现在我正在使用 Angular js,它的重定向如下,这打破了逻辑。
http://www.something.com/sometest/test/#/registration
我想到了html5 mode
,但它造成了其他问题,例如我的页面中的链接不起作用,只有 url 正在更新(我猜我们使用 html5mode 时会出现这种情况)。所以,我不想使用 html5mode。我只是想阻止 #
重定向到 /#/
。
请告诉我如何禁用此重定向
注意:我没有使用路由,也不需要它。我也不想使用 html5mode。这是现有的实现,我需要在 Angular js 应用程序中使用它来打开一个弹出窗口或其他东西。
【问题讨论】:
您是否也将服务器配置为html5模式? 我不知道这是否可以帮助您,但请查看此答案***.com/questions/32626081/… 我自己解决了这个问题。这是由于向控制器注入了$location
服务。
【参考方案1】:
如果您的应用程序在 /sales/ 下运行,请尝试在 index.html 中设置基本路径并打开 html5Mode:
<base href="/sales/index.html" />
否则,
<base href="/" />
如果您使用的是 IE9,那么 HTML5mode 将工作,因为 IE9 不支持 HTML5 History API
function supports_history_api()
return !!(window.history && history.pushState);
请参阅使用$location
这行得通!
干杯:)
【讨论】:
html5mode 也破坏了其他一些东西。我不想用它 您使用的是哪个版本的 Angular?我认为它不会破坏很多应用程序 我已经在我的问题中提到我不想使用 html5mode 我确定你做错了什么,而且你的帖子并不是说你不想使用 html5mode。它说你用过但没用 现在我已经更新了问题,如果你有没有 html5mode 的东西,那么更新你的答案【参考方案2】:我自己解决了这个问题。这是由于向控制器注入了$location
服务。
//issue
app.controller("testController", ["$scope", "$location", function($scope, $location)
]);
我从控制器中删除了$location
服务,问题得到解决。
//resolved
app.controller("testController", ["$scope", function($scope)
]);
【讨论】:
以上是关于如何在 Angular js 中禁用哈希重定向的主要内容,如果未能解决你的问题,请参考以下文章
如何使 Laravel 5 重定向到没有哈希(#)的 Angular 路由?