我的角度应用使用UI路由器。我正在通过滚动到另一个点来收听状态变化。 (它基本上只是一个大的视差卷轴)
所以我可以点击菜单链接,使用状态机将我带到正确的位置,但如果我想使用鼠标滚轮滚动,我希望它在滚动时更新网址,但需要避免使用网址改变触发不必要的状态变化。
如何更新网址以反映滚动位置而不触发状态更改事件等?
答案 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,因此可能不适合所有(实际上是这种情况)。