【问题标题】:Scroll always on top in AngularJS在 AngularJS 中始终滚动到顶部
【发布时间】:2015-06-27 10:48:01
【问题描述】:

我正在使用 AngularJS(MEAN.io 堆栈),但遇到与滚动相关的烦人故障。

当用户点击链接时,目标页面的滚动位置与原始页面相同,而不是停留在顶部。

为了解决这个奇怪的行为,我使用了下一个:

$rootScope.$on("$viewContentLoaded", function () {
  $anchorScroll();
});

但是这段代码让每个页面都在顶部滚动,这也很烦人,因为用户必须能够返回并恢复之前的滚动位置。

有什么建议吗?我怎样才能得到想要的结果?

谢谢!

编辑--------

当我尝试使用 ng-view + autoscroll 解决方案时,它对我不起作用,我不知道为什么。

这是我在服务器提供的 default.html 页面中使用它的方式:

<body ng-cloak class="ng-cloak" ng-class="{state: true, auth: authPage}" ng-controller="BodyController">

      <div ng-include="'/system/views/header.html'"></div>

    <section class="content">
      <div data-ng-include="'/ceh-admin/views/adminShortcuts.html'"></div>
      <div ng-view autoscroll="true">{% block content %}{% endblock %}</div>
    </section>

    <div data-ng-include="'/system/views/footer.html'"></div>

    {% include '../includes/foot.html' %}

  </body>

我的 HTML 代码中有什么奇怪的地方?

【问题讨论】:

    标签: javascript jquery css angularjs mean.io


    【解决方案1】:

    根据ngView documentation,您需要声明您希望如何处理滚动。

    autoscroll (optional) string ngView 是否应该调用 $anchorScroll 在视图更新后滚动视口。

    • 如果未设置该属性,请禁用滚动。
    • 如果属性设置为无值,则启用滚动。
    • 否则,仅当作为表达式评估的 autoscroll 属性值产生真值时才启用滚动。

    默认情况下它是禁用的,因此您需要将以下内容添加到您的标记中:

    <div ng-view autoscroll></div>
    

    或(根据文档并取决于您的偏好):

    <div ng-view autoscroll="true"></div>
    

    【讨论】:

    • 看来这对我也不起作用。我已经编辑了主要主题,展示了我是如何使用它的。你看到了什么奇怪的东西吗?
    • 您是否收到任何控制台错误?如果您在此处添加/删除自动滚动 (jsfiddle.net/dL76co2r),您可以看到它应该如何工作?您的标记看起来没有问题。
    【解决方案2】:

    我不是最好的 angular js,但我遇到了类似的问题,我使用以下代码修复了它:

    <div data-ng-view data-autoscroll="true"></div>
    

    您可以在此处查看文档:angular doc

    希望对你有帮助

    【讨论】:

    • 是的,感谢您的帮助,但目前该解决方案也不适用于我。编辑了显示我如何使用自动滚动的主题。
    • @RubénJiménez 你用的是什么版本的 Angular?任何控制台错误?
    猜你喜欢
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 2015-05-06
    • 2014-09-23
    • 2022-11-19
    • 1970-01-01
    相关资源
    最近更新 更多