AngularJS锚点第二次单击不工作

AngularJS锚点第二次单击不工作,angularjs,anchor,Angularjs,Anchor,这是我的 单击转到一个的末尾它将导航到id为的div 第二次点击相同的链接,它不会做任何事情 我做错了什么?或者这和角有关 注意:这将是黑客使用点击事件,这应该工作我寻找直接的解决方案 使用角度和路线版本1.5.5 *新增赏金试试这个: 到一的末尾 这是一个。 var-app=angular.

这是我的

  • 单击转到一个的末尾它将导航到id为的div
  • 第二次点击相同的链接,它不会做任何事情
  • 我做错了什么?或者这和角有关

    注意:这将是黑客使用点击事件,这应该工作我寻找直接的解决方案

    使用角度和路线版本1.5.5

    *新增赏金

    试试这个:

    
    到一的末尾
    

    这是一个。 var-app=angular.module(“myApp”[“ngRoute”]); app.run(函数($rootScope、$location、$anchorScroll){ //更改路线后,滚动至正确的元素。 //$rootScope.$on(“$routeChangeSuccess”,函数(newRoute,oldRoute){ //log(“称为routeChangeSuccess”); //如果($location.hash())$anchorScroll(); // }); $rootScope.goTo=函数(值){ $location.hash(值); }; }); app.config(函数($routeProvider,$locationProvider){ $routeProvider .当(“/”时{ templateUrl:“/one.html” }) .when(“/one”{ templateUrl:“/one.html” }); $locationProvider.html5Mode(true).hashPrefix(“!”); });

    希望这能有所帮助。

    我检查了您的plunkr,我注意到在提供锚定标记时,您没有指定路线,因此当我将特定行更改为此时,“$routeChangeSuccess”不会触发

    <a href="/one/#one"> go to end of one </a>
    
    
    
    我的锚卷轴工作正常

    解决方案:


    如果您还没有考虑到HTML5模式在路由方面的挑战,请注意。

    您基本上需要在
    位置更改上触发
    主播克隆()。为此,您无需检查
    $routeChangeSuccess
    。您可以直接使用
    $locationChangeStart

               $rootScope.$on('$locationChangeStart', function(event) {
                              $anchorScroll();
                     });
    
    为了同时使用
    $routeChangeSuccess
    $locationChangeStart
    两种方法,您需要按如下方式指定
    锚定
    标记的routename

    <a href="/one/#one"> go to end of one </a>
    
    
    

    已更新

    请查看发布的答案。希望有帮助。不,我不想使用click Event。问题是,只有在位置发生更改时才向下滚动,但在您的情况下,情况并非如此,因为您总是转到#one。这是。您需要使用“单击事件”来获取所需内容,或者在url中添加一些uuid以保证不平等性。@如果您两次单击同一链接,这也不会起作用。若你们改变路线,预计不会有问题是的,这是关键。您需要更改路由-尝试附加一些动态哈希,如当前时间戳。这应该行得通。你对这个关键点有什么参考资料吗?我认为这不是把时间戳放在现场的正确方法。。如果我们有@Peru检查此链接以查看不同视图的多个视图,我们如何处理这种情况。对于不同的局部视图,请检查此链接,它确实有帮助。。你拿到赏金了吗
               $rootScope.$on('$locationChangeStart', function(event) {
                              $anchorScroll();
                     });
    
    <a href="/one/#one"> go to end of one </a>