当前位置: 首页 > 知识库问答 >
问题:

使用AngularJS$anchorScroll滚动到另一个页面的锚标签

霍鸣
2023-03-14

从我的AngularJS主页,我需要滚动到另一个页面中的锚定标记。基于url,这两个页面都作为部分html进入ng视图组件。启动服务器时,会加载主页,然后需要从主页转到常见问题页面。我使用了带有#的普通href,但它没有指向目标页面中的正确div。下面是我用$anchorScroll尝试的内容

这里是控制器方法

	
$scope.scrollToFaq = function(id) {
   $location.path("/faq")
   $location.hash(id);
   $anchorScroll();
}

这是我在家里使用它的方法。html

<a ng-click="scrollToFaq('HERE')" href="" class="link">Here</a>

但这并不能正常工作。如果我直接加载faq页面,然后返回并单击主页上的锚定链接,它就会工作。是否可以使用“$anchorScroll”执行此操作

共有3个答案

虞航
2023-03-14

有同样的问题。但修复了它:)想法是更改到URL,等待半秒钟,然后跳转到锚。

HTML:

<a href="" ng-click="goToAnchor('/', 'links')">Links</a>

控制器:

angular.module('exampleApp').controller('NavbarCtrl', function ($scope, $location, $timeout, $anchorScroll) {
      $scope.goToAnchor = function(path, anchor){
          $location.path('/');

          $timeout(function() {
             $anchorScroll(anchor);
          }, 500);
      };
});
夏弘文
2023-03-14

听起来像是一个与历史相关的问题。如果div已经加载,则立即找到它。这个解决方案在过去对我有用。也许是等待页面加载的想法。

$scope.scrollToFaq = function(id) {
    $location.path("/faq");
    $(window).on("load", function(){       
       $location.hash(id);
       $anchorScroll();
    });
    };  
东郭弘
2023-03-14

尝试使用Angular的$超时服务。

$scope.scrollToFaq = function(id) {
 $location.path("/faq");
 $timeout(function(){
   $location.hash(id);
   $anchorScroll();
 }, delay);

这里的延迟是您希望等待锚定滚动发生的时间。我读到过有关300毫秒/400毫秒为人工作的文章。当我遇到这个问题时,我只需调用$超时内的$anchorscroll。因此,请使用最适合您的案例。

注意:我正在寻找一种不使用超时的解决方案。当我找到一个时将更新。

 类似资料:
  • 本文向大家介绍angularJs中跳转到指定的锚点实例($anchorScroll),包括了angularJs中跳转到指定的锚点实例($anchorScroll)的使用技巧和注意事项,需要的朋友参考一下 $anchorScroll 根据HTML5的规则,当调用这个函数时,它检查当前的url的hash值并且滚动到相应的元素。 监听$location.hash()并且滚动到url指定的锚点的地方。 可

  • 我希望在我的Angular2页面上添加一些链接,当单击时,这些链接将跳转到页面中的特定位置,就像普通的hashtags所做的那样。所以链接应该是这样的 等等。 我不认为我需要HashLocationStrategy,因为我对正常的Angular2方式很好,但是如果我直接添加,链接实际上会跳转到根,而不是在同一个页面上的某个地方。任何方向都很感激,谢谢。

  • 问题内容: 我正在使用ajax调用在服务文件中执行功能,并且如果响应成功,我想将页面重定向到另一个URL。目前,我正在通过使用简单的js“ window.location = response[‘message’];”来做到这一点。但是我需要用angularjs代码替换它。我看过关于的各种解决方案,他们使用了$location。但是我是新手,对实现它有困难。 问题答案: 您可以使用Angular

  • 问题内容: 如何从一页导航到另一页。假设我有一个登录页面,在输入用户名和密码字段并单击提交按钮后,它需要验证,如果用户名和密码都正确,则需要进入主页。主页内容需要显示。我在这里发布代码。在浏览器中,URL不断变化,但内容没有变化。 index.html home.html test.js 问题答案: 正如@dfsq所说,您需要一个ng-view来放置新视图。当然,如果将ng- view添加到索引中

  • 问题内容: 我想让浏览器仅使用JavaScript即可将页面滚动到给定的锚点。 我在HTML代码中指定了或属性: 要么 通过导航到,我希望获得与您相同的效果。应滚动页面,使锚点位于页面可见部分的顶部附近。 问题答案: 完全不需要jQuery!

  • 我需要设置一个ng click事件,以便它加载一个新页面,然后,一旦页面加载完毕,滚动到页面上的一个定位点。我已经尝试了这篇文章中提出的每一个解决方案,但我无法让它正常工作。 大多数解决方案都围绕着滚动到已经加载的页面上的锚定。我需要在加载新页面后出现滚动。 这表示“配置文件卡”中的按钮。当用户点击卡片时,它会将他们带到一个个人资料页面。但是,当他们单击按钮时,它需要将他们带到该配置文件页面的#j