【问题标题】:AngularJs is preventing link to be clicked twiceAngularJs 阻止链接被点击两次
【发布时间】:2016-05-11 21:58:46
【问题描述】:

我使用 AngularJS 不是为了构建 SPA,而只是为了系统中的某些功能。我很难找出为什么 Angular 会阻止页面在到达那里后被刷新,或者如何禁用/解决它。

所以我有简单的菜单:

<ul>
    <li><a href="/admin">Homepage</a></li>
    <li><a href="/admin/profile">Profile</a></li>
</ul>

当我已经在http://example.com/admin 页面上并单击第一个链接 (/admin) 时,什么也没有发生。

我可以检测某个a 元素是否有href,然后使用window.location,但不幸的是我在系统的其他一些部分使用了AJAX,因此不适合。

请指教。

【问题讨论】:

  • 你确定这是有角度的吗?如果删除 angular.js 是否仍然无法转到/admin
  • 是的,我敢肯定,如果我删除 ng-app="app",它就会再次正常工作。

标签: javascript angularjs


【解决方案1】:

您正在使用单页应用程序。路由器负责在不同的应用程序路由之间导航,但浏览器从不获取全新的页面。

当你点击一个你已经打开的页面的链接时,没有可以导航到的地方。

编辑:您可以编写一个指令来检测对锚标记的点击,如果路由相同,它可能会触发页面刷新。这会给你你正在寻找的行为。但是,我很难做到这一点。

编辑 2:这就是停止导航的原因:https://github.com/angular/angular.js/blob/v1.5.x/src/ng/location.js#L889

据我所知,您无法禁用该行为,或者如果有的话,创建您自己的指令来触发页面刷新将是一个更丑陋、更脆弱的解决方案。

【讨论】:

  • 事情是我不是 :) 因为我已经写了它 - 我只有系统,我想为某些功能使用角度 - 例如内置浮动问答工具。所以是的,有一个可以导航的地方。
  • 是的,我认为这可能是一个选项,但我宁愿首先尝试从 Angular 端禁用此行为,而不是编写这样的指令,因为这可能是未来的问题。
  • 你在使用$route (ngRoute)吗?
  • 不,我不使用ngRoute - 我不需要它。
【解决方案2】:

您需要使用ng-hrefhttp://plnkr.co/edit/stdkjN?p=preview

【讨论】:

  • 是的,也许,但我怀疑。为了将 AngularJS 用作某些部分的库,我真的无法重写整个系统。
猜你喜欢
  • 1970-01-01
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多