是否有可能在同一页面上有一个完整的URL路由到锚定元素?

时间:2014-04-25 21:10:30

标签: angularjs

我在我的应用中设置了html5mode(true),我的所有内容都在一个视图中。

预先角色的想法是用户点击关于,它会滚动到#about元素。这对jquery非常有用,因为您可以轻松地为滚动设置动画并使其变得美观和流畅。

angularjs但是我正在努力如何使用路由完成此操作,并且仍然保留jquery幻灯片交互,而不重新加载我的路由中定义的模板/视图。

理想情况下,我想拥有example.com/aboutexample.com/contact这样的网址,并让他们在幕后滚动到该元素。

我不知道如何以最佳方式考虑angularjs。

任何帮助?

修改 这是我到目前为止所尝试的,似乎在没有动画的情况下有点工作..

在我的NavigationController中我有以下内容..

$scope.scrollTo = $rootScope.$on('$locationChangeStart', function(e, n, c){
  e.preventDefault();
  $location.hash('about');
  $anchorScroll();
});

但是,这仅在用户点击页面上的按钮时才有效,并且根本不考虑该URL。

1 个答案:

答案 0 :(得分:0)

这是什么意思? http://plnkr.co/edit/De6bBrkHpojgAbEvHszu?p=preview

(不是我的代码)

锚点包含在网址中,

<a href="#test?scrollTo=foo">Test / Foo</a> <a href="#weee?scrollTo=bar">Weee / Bar</a>

并且模块上的run函数执行哈希技巧..

app.run(function($rootScope, $location, $anchorScroll, $routeParams) {
  $rootScope.$on('$routeChangeSuccess', function(newRoute, oldRoute) {
    $location.hash($routeParams.scrollTo);
    $anchorScroll();  
  });
})

希望这可以帮助你..