$anchorScroll 和 $location 仅在第二次尝试后才有效

2024-04-30

我正在尝试使用$anchorScroll and $location.hash()滚动到div。我在页面顶部有一个底部。当我单击底部时,我希望页面向下滚动到我有一个页面的底部<div id="target">.

由于某种原因,第一次单击该按钮时,我的页面不会滚动。如果第二次单击,页面就会滚动。之后滚动效果很好。如果我刷新页面,可以重现这种奇怪的行为。

我的控制器中有这段代码:

$scope.scrolldown = function() {
  $location.hash('target');
  $anchorScroll();
}

我知道$location.hash('target')line 应该将哈希值附加到我的 URL 末尾。

这是我的页面首次加载时的 URL:

http://run.plnkr.co/iqvdGjdeCP4idP4D/

当我第一次点击按钮后,它变成:

http://run.plnkr.co/iqvdGjdeCP4idP4D/#/target

这是不对的(并且页面无法正确滚动)。

当我第二次点击按钮后,它变成:

http://run.plnkr.co/iqvdGjdeCP4idP4D/#/target#target

从此时开始,页面开始正确滚动,但 URL 对我来说仍然看起来很奇怪——为什么我需要两个哈希值?

我想知道为什么该按钮仅在第二次单击后才起作用以及如何更正它。

Update

我将路由添加到我的代码中,滚动现在工作正常。 这是我的路由演示。 http://plnkr.co/edit/KRC9Ou?p=preview


看看这个问题,其中包含一个可能的解决方案:禁止在查询参数更改时重新加载基于 ui-router 的视图 https://stackoverflow.com/questions/21425378/supress-reloading-of-ui-router-based-view-on-query-parameter-change

第二次单击该按钮时它会起作用,因为哈希值不会更改(因此路由不会重新加载)。第一次点击时注意到页面闪烁了吗?这表明整个 DOM 已被重新渲染。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

$anchorScroll 和 $location 仅在第二次尝试后才有效 的相关文章

随机推荐

  • Android 2.3 中崩溃服务重启后不会调用 onStartCommand()

    我遇到了 Android 服务重启的问题 我正在针对 API 版本 7 进行构建 并在 Android 2 3 3 的设备上运行 问题是 当我的服务被系统杀死并稍后重新启动时 只有onCreate 我的服务被称为 代码在onStartCom
  • 如何在服务器端应用程序中获取本地数据源?

    我正在使用 blazor 服务器端应用程序 我需要引用本地数据源 我已经使用 Http 作为默认客户端示例 code ChartData dataSource protected override async Task OnInitAsyn
  • Swift loadItem 关闭未运行

    我正在编写一个共享扩展 但捕获并保存共享附件的闭包未运行 我怎样才能找出原因 switch 分支执行 附件就在那里 没有错误消息 它只是永远不会运行 if let contents content attachments as NSItem
  • 我的类可以在 Swift 中重写协议属性类型吗?

    protocol Parent var children AnyObject get set class Foo class Bar Parent error happens here var children Foo init 我收到错误
  • 续集 beforeSave 挂钩未触发

    我已经使用sequelize auto生成了模型 并且需要使用beforeSave钩子 请参阅here https stackoverflow com questions 47795113 insert update postgis geo
  • Microsoft Visual Studio 2012 无法在 C# 文件中设置断点

    我安装了 Microsoft Visual Studio Professional 2012 版本 11 0 60610 01 Update 3 调试 C cs 文件时 当我尝试设置断点时 Visual Studio 会显示以下消息 无法在
  • 将所有 mysql 选定的行放入数组中

    我想知道 php 中是否有一个函数可以允许我将所有选定的数据放入一个数组中 目前我正在使用 mysql fetch array 正如我在手册中读到的那样 该函数不会获取表中的每条记录 result mysql query SELECT FR
  • 获取当前 ClickOnce 的应用程序发布者名称?

    是否可以读取当前运行的 ClickOnce 应用程序的发布者名称 您在Project Properties gt Publish gt Options gt Publisher name在 Visual Studio 中 我需要它的原因是运
  • SQL select通常是如何实现的

    我有两节课 class PopulationMember public void operationOnThisMember1 void operationOnThisMember2 private Population populalti
  • 带有透明图像的可拖动 Tkinter 标签仍然覆盖父画布中的图像

    我正在努力在背景图像顶部添加可拖动标签 其中标签是具有透明背景的图像 用于标签本身的图像是透明的 但标签本身相对于其父画布不透明 由于标签是可拖动的 我无法轻松使用父图像作为标签 并将透明图像粘贴在顶部 龙是一个可拖动的标签 具有透明背景
  • 如何在 AngularJS 中读取 Java 属性文件?

    有什么方法可以从位于网络服务器外部的 angularjs 读取属性文件吗 就像在java中一样 属性文件部署在项目之外 但是我们可以将项目中的这些文件作为filter properties读取 这样任何解决方案都可以在AngularJS中找
  • Android TV 上不会出现通知

    我正在 Android TV 上玩通知 不过 我无法在屏幕上显示通知 我正在使用 Android 6 0 上的 Nexus 播放器 当我在手机上运行此代码时 会出现通知 但在电视上 不会出现通知 我错过了什么吗 Override publi
  • 适用于 Mac OS X 的 SQL 客户端,可与 MS SQL Server 配合使用 [已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 桌面应用程序的对象持久化策略

    我正在开发一个基于 Java 的桌面应用程序 我需要保留一些从应用程序对象模型生成的数据 最好保存到文件中 还需要保护持久文件 以便其他人无法从数据中获取对象模型详细信息 执行这些操作的最佳策略是什么 我的印象是这些要求对于桌面应用程序来说
  • 运营商部分应用

    如果我想在字符末尾添加一个空格以返回列表 如果我不传递任何参数 我将如何通过部分应用程序来完成此操作 还有类型是 space Char gt Char 由于使用 和 运算符出现 解析错误 我在末尾添加空格时遇到问题 到目前为止我所拥有的是
  • 如何将图像调整为原始大小

    Android s imageView has a serious flaw it makes my image into a square frame with the rest as white space How can I fix
  • EF Code First DBContext 和事务

    我想知道实现交易的最佳方式是什么DBContext 尤其 Does DbContext SaveChanges如果我更改多个实体 请在内部实施交易 如果我想打电话DbContext SaveChanges多次 相同上下文 不同上下文 如何实
  • 我是否应该将 CachingConnectionFactory 与 hornetq 2.4.1 一起使用

    根据有关在 hornetq 中使用 JMSTemplate 的长期信息 我们在连接到服务器时一直使用 CachingConnectionFactory 这是一个示例配置 与我们正在使用的配置非常相似
  • 如何从标准 url 获取用于嵌入的正确 soundcloud url?

    所以现在我可以从嵌入或 iframe 标签中已嵌入的 soundcloud 文件中获取 url 并在另一个页面上使用这些 url 并将其显示在 fancybox 中 如果用户提供典型的共享 url 例如 有没有办法获得正确的 url 或显示
  • $anchorScroll 和 $location 仅在第二次尝试后才有效

    我正在尝试使用 anchorScroll and location hash 滚动到div 我在页面顶部有一个底部 当我单击底部时 我希望页面向下滚动到我有一个页面的底部 div 由于某种原因 第一次单击该按钮时 我的页面不会滚动 如果第二