【问题标题】:AngularJS: Disable html button if history is emptyAngularJS:如果历史记录为空,则禁用 html 按钮
【发布时间】:2015-07-21 20:21:05
【问题描述】:

在我的 AngularJS 应用程序中,我实现了一个带有“返回”功能的 html 按钮。如果历史记录为空(因为用户在页面加载后没有更改路径)我想隐藏/禁用它。

有没有办法用角度检测历史是否为空?

【问题讨论】:

  • 你读过Angularjs的$location服务吗?
  • 不过,这个问题可能是duplicate
  • 在我看来不是,因为问题在于如何“以角度方式”做到这一点。
  • 好问题。只有一个警告:我遇到了返回功能的问题,因为它可能会有所不同,有时您的用户不会去您需要的地方。我更喜欢具有固定目的地的href(例如“#/home”)

标签: angularjs browser-history


【解决方案1】:

您甚至可以查看 $window angular js 服务。它与 javascript 的 window 对象完全一样。

历史对象包含用户访问过的 URL(在一个 浏览器窗口)。

历史对象是窗口对象的一部分,被访问 通过 window.history 属性。

如果你想查看history是否为空,你应该使用

if( $window.history.length <= 1 ) {
  //Internet Explorer and Opera start at 0, while Firefox, Chrome, and Safari start at 1
  console.log("empty");
}

请确保您已在控制器中注入 $window 服务。历史对象的一些功能是here。您可以先编写更多行来检测浏览器,然后再以角度方式应用您的条件。请检查此post

【讨论】:

  • 感谢您的回答。您确定,检查 history.length === 0 就足以确保此窗口中之前没有任何访问过的 URL?只是问,因为我认为我在某个地方读到它是不够的。编辑:我已经在您链接到的 MDN 文章中找到了答案。 “你可以通过查看length属性的值来确定历史堆栈中的页数”
  • @tmuecksch 请查看我编辑的答案。您可以使用&lt;=1 来判断历史记录。它适用于除 IE 或 OPERA 之外的所有主流浏览器
  • Vineet:很高兴知道。谢谢。
猜你喜欢
  • 2018-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多