如何让/ mylink #sectionid在angularjs中工作?

时间:2014-04-16 01:57:02

标签: angularjs

如果我没有使用angular,那么将加载路由mylink,然后浏览器将向下滚动到sectionid部分。

在Angular中,它不会滚动。我读了一些完全疯狂的解决方案,涉及注入多个模块并拥有疯狂的唯一URL。我拒绝做这样的事情。

我希望我的href值保持标准。 Angular有什么方法可以做到这一点吗?

请记住,如果" mylink"已经加载,然后链接工作正常,但如果我在另一个页面,说" home",然后我导航到mylink #sectionid,然后滚动不会发生。

(我的意思是......如果Angular可以做到这一点,我会认为这是一个错误。从现在仍然使用的90年代开始,不支持常用的语法是荒谬的)< / p>

编辑:我认为问题可能是本网站上的AJAX数量。

2 个答案:

答案 0 :(得分:0)

当然可以,您需要将$anchorScroll注入您的控制器

example from the angular site

function ScrollCtrl($scope, $location, $anchorScroll) {
  $scope.gotoBottom = function (){
    // set the location.hash to the id of
    // the element you wish to scroll to.
    $location.hash('bottom');

    // call $anchorScroll()
    $anchorScroll();
  };
}

从另一条路线你可以通过传递到路线的参数来处理这个问题,并在初始化时根据路线参数滚动。

答案 1 :(得分:0)

我不是我的解决方案的忠实粉丝,但我听onRouteChange,然后注入anchorScroll并在1000毫秒超时后简单地调用anchorScroll,因为哈希已经设置,不需要再做了。 [给所有有角度的东西腾出时间来完成自己的工作(我正在研究的网站上有太多的AJAX,但我还没有控制数据,所以我无能为力)] < / p>

Anywho,手动启动锚点滚动工作。如果有人知道更好的方法,那就是膨胀。