【问题标题】:AngularJS won't refresh the page if the link that is clicked is with the same URL as the current page如果单击的链接与当前页面的 URL 相同,AngularJS 不会刷新页面
【发布时间】:2014-08-24 08:16:19
【问题描述】:

我在我使用 AngularJS 的两个项目中注意到了这一点,所以我假设这是 AngularJS 的问题。

假设我在菜单上有一个按钮,上面写着“注册”并将我带到 /account/register 页面。但是,如果我在 /account/register 页面上,单击按钮不会刷新页面。就像按钮被禁用一样。当我要单击的链接与我所在的当前页面具有相同的 URL 时,总是会发生这种情况。 URL 很简单<a href="something1/something2">Link</a>。如何消除这种行为?

【问题讨论】:

  • 要刷新页面吗?
  • 我只希望链接可以点击,即使这意味着它会将我带到与当前页面相同的页面。

标签: angularjs


【解决方案1】:

在使用 angular 时遇到了同样的问题,将 target="_parent" 属性添加到链接使其工作。

【讨论】:

  • 使用 AngularJS v1.4.7 验证。这解决了我在导航栏中遇到的完全相同的问题,该问题通过ng-include 包含在我的所有页面中。
【解决方案2】:

您可以检查当前的 url/state/hash 是否为 "/account/register" ...如果是,则使用 $route 服务的 reload 方法。

AngularJs: Reload page

【讨论】:

  • 我说的注册链接不在任何Angular Controller中,它只是菜单中的一个链接。但是,它在 ng-app 下。如果链接位于某个 Angular 控制器下,也会发生这种情况。
  • 那么你可能需要监听 $route 服务的 'locationchangestart' 事件。你能粘贴一个示例 sn-p 吗?
  • 我没有使用 $routeProvider 也没有使用 $locationProvider,它不是单页应用程序。
【解决方案3】:

对于谁不明白,我已经记录了我的屏幕来显示这个问题。 基本上,Angular 有一些问题。

  1. 如果我们将导航放置在 ng-app 之外。
  2. 应用程序已加载。
  3. 然后我们再次点击这个导航。
  4. 应用会无缘无故消失。

我通过将target="_parent"target="_self" 属性添加到上面回答的锚标记来修复它。

查看更多Angular docs

【讨论】:

    【解决方案4】:

    我没有找到任何合理的方法来检查视图内的路径,但这可以工作:
    查看:

    <a link-href="path/to/same/location">same location</a>
    

    指令:

    app.directive('linkHref', ['$location', '$route', function ($location, $route) {
      return {
        restrict: 'A',
        link: function ($scope, $element, $attrs) {
          $element.bind('click', function () {
            if ($location.$$url == $attrs.activeLink) {
              $route.reload();
            } else {
              $location.path($attrs.activeLink);
          });
        }
      };
    }]);
    

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题,发现如果我删除了工厂中列出的 $location(无论如何都没有使用),问题就消失了。

      【讨论】:

        【解决方案6】:
        <a target="_self" href="/xxxxxxx"></a>
        

        会解决这个问题

        【讨论】:

          猜你喜欢
          • 2018-09-15
          • 1970-01-01
          • 1970-01-01
          • 2014-01-14
          • 1970-01-01
          • 2020-04-03
          • 2022-11-02
          • 2022-01-22
          • 1970-01-01
          相关资源
          最近更新 更多