如果单击的链接与当前页面具有相同的URL,AngularJS将不会刷新页面

时间:2014-07-03 09:19:28

标签: angularjs

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

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

6 个答案:

答案 0 :(得分:6)

角度有同样的问题,在链接中添加target="_parent"属性使其正常工作。

答案 1 :(得分:1)

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

AngularJs: Reload page

答案 2 :(得分:1)

对于谁不理解,我已经录制了我的屏幕以显示此问题。 基本上,Angular有些不对劲。

Zone not loaded

  1. 如果我们将导航放在ng-app。
  2. 之外
  3. 该应用已加载。
  4. 然后我们再次点击此导航。
  5. 该应用程序将无缘无故地消失。
  6. 我通过将target="_parent"target="_self"属性添加到锚标记来修复它,如上所述。

    Angular docs

    上查看更多内容

答案 3 :(得分:0)

我没有找到任何合理的方法来检查视图中的路径,但这可能有效:
视图:

<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);
      });
    }
  };
}]);

答案 4 :(得分:0)

我遇到了同样的问题,发现如果我删除了工厂中列出的$ location(不管是否使用)问题就会消失。

答案 5 :(得分:0)

<a target="_self" href="/xxxxxxx"></a>

将解决此问题