【问题标题】:AngularJS: How do i scroll to an object with an offset?AngularJS:我如何滚动到具有偏移量的对象?
【发布时间】:2015-06-26 16:46:54
【问题描述】:

我正在开发一个用 AngularJS 构建的应用程序。传递给我的一个要求是,当表单无效并且用户单击提交时,窗口应将第一个无效元素滚动到视图中。

这很容易使用 element.scrollIntoView() 完成,但我需要设置一个偏移量。您会看到,页面顶部有一个“淡入”页面其余部分的标题。见下图。

所以我只能尝试找出一些抵消的方法。我找到了一堆例子,但我没有找到我正在寻找的东西。

这是我当前的代码(

var visibleInvalids = angular.element.find('.ng-invalid:visible');
if (angular.isDefined(visibleInvalids)){
    // if we find one, set focus and anchor
    visibleInvalids[0].scrollIntoView(true);

    visibleInvalids[0].focus();
}

【问题讨论】:

  • 不能用jQuery吗?
  • 我真的不应该,因为它是一个 AngularJS 应用程序。我正在滑动边缘移动页面,因为它是来自控制器的直接 dom 操作。糟糕。
  • 我很想知道这个(在指令中)的角度友好的实现。我在网站上做了类似的事情,但可惜它使用 jQuery。
  • 我提出的可能能够进入指令。我什至还没有接受。我想先获得一些选票和cmets。
  • 找出您想要滚动到的位置并使用scrollTo

标签: javascript angularjs scroll offset


【解决方案1】:

对我自己的问题的建议答案。注入 $anchorScroll 并使用它,但我对想法持开放态度......

  var visibleInvalids = angular.element.find('.ng-invalid:visible');

  if (angular.isDefined(visibleInvalids)){
    // if we find one, set focus and anchor

    // Offset is used to keep items 'below' that fade-in header.
    $anchorScroll.yOffset = 200;
    if (visibleInvalids[0].id) {
      $anchorScroll($location.hash(visibleInvalids[0].id));  
    }

    visibleInvalids[0].focus();
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2015-10-09
    相关资源
    最近更新 更多