最终确定页面加载前的角度更改URL

时间:2016-01-23 18:44:35

标签: javascript angularjs url iis routes

我正在Angular中尝试一些东西并且让我挠头,但我已经看过多次发布已经完成的事情。

我想要的是将浏览器中的网址保持为静态:http://domain.com/

在我的应用程序中,当页面初始化时继续执行

$location.path('/home').replace();

这会将我的网址更改为http://domain.com/#/home

该页面正在IIS中托管,所以我尝试了第一次重写规则,但是那些虽然规则有效并且被困住但不起作用的规则。

在主页上我添加了一个触发以下功能的按钮:

function changeURL() { if (typeof (history.replaceState) != "undefined") { history.replaceState(null, null, "/"); console.log("URL changed"); } else { console.log("URL cannot be changed"); } }

这是完美的!我的网址现已更改。但是在我的javascript中:

$scope.$watch('$viewContentLoading', function () { changeURL(); });

页面加载后,网址会暂时更改为http://domain.com/#/home(我可以在地址栏中看到它闪烁)然后转到http://domain.com/#

我相信,由于浏览器首先需要执行并加载$location.pathchangeURL()将在$location.path完成后立即运行。即使我在$viewContentLoading仍在进行中时尝试更改。

我试着看看是否可以在$location.path完成期间或之前更改时间。

我尝试在以下事件中插入changeURL()并成功:

$rootScope.$on('$locationChangeStart')

$rootScope.$on('$locationChangeSuccess')

$browser.onUrlChange()

我也尝试使用以下代替$location.path()

$state.transitionTo('^', { reload: false, inherit: false, notify: false })

$state.go('^', null, { reload: false, inherit: false, notify: false })

也可以在preventDefault()$locationChangeStart进行阅读并进行一些操作但不确定如何执行此操作。

任何帮助将不胜感激!

提前致谢!

0 个答案:

没有答案