更新URL而不触发状态更改

时间:2015-01-09 14:06:37

标签: javascript angularjs angular-ui-router

我的角度应用使用UI路由器。我正在通过滚动到另一个点来收听状态变化。 (它基本上只是一个大的视差卷轴)

所以我可以点击菜单链接,使用状态机将我带到正确的位置,但如果我想使用鼠标滚轮滚动,我希望它在滚动时更新网址,但需要避免使用网址改变触发不必要的状态变化。

如何更新网址以反映滚动位置而不触发状态更改事件等?

2 个答案:

答案 0 :(得分:2)

所以这最终成功了:

$state.go('STATE_NAME',null,{location:'replace',notify:false})

答案 1 :(得分:0)

Angulajs在$location对象上有一个html5模式,允许你使用html5历史api作为网址,这里是angularjs docs。您可以将其用于链接到某些滚动位置。

这里有一篇很好的文章,关于使用angularjs之外的history api更改网址而不刷新。

使用此功能,您可以使用javascript(使用历史记录api)触发基于滚动位置/路径点的网址更改。

即。 if (scrollTop > 200) { changeUrl('some-url');} //Sudo code

编辑:根据评论,这不会阻止路由器尝试处理新更改的URL,因此可能不适合所有(实际上是这种情况)。

相关问题