【问题标题】:AngularJS ng-href does not go to linkAngularJS ng-href 不去链接
【发布时间】:2015-09-24 03:29:28
【问题描述】:

我已经检查了这里的文档和ng-href not working 线程,但我很难过。

ng-href 是否需要完整路径?我的当前看起来像<a ng-title="{{title.text}}" ng-id="{{id.num}}" ng-href="/page.php#param:{{id.num}}"><span>go here</span></a>,但是当我点击它时,它会正确更改浏览器地址栏中的 URL(这是一个合法的 URL;我可以在地址栏中点击“输入”,它会“去那里”),它实际上并没有转到该页面。

怎么了?我需要将它与某种ng-click 结合起来吗?如果是这样,为什么?

更新:链接将转到调用它的同一页面,但具有不同的参数以用于不同的数据记录显示。我认为这可能与它有关......

【问题讨论】:

    标签: angularjs angularjs-ng-href


    【解决方案1】:

    最简单的方法是添加 target="_self",在您的情况下,这是解决方案:

    <a ng-title="{{title.text}}" ng-id="{{id.num}}"
     ng-href="/page.php#param:{{id.num}}" target="_self">
     <span>go here</span>
    </a>
    

    不需要 ng-click 和 AngularJS 函数。

    【讨论】:

    • 当我可以设置测试用例场景时,我将不得不尝试一下。由于我换了工作,我无法访问最初提示这个问题的上一个项目。感谢您的建议。
    • 这个答案提供了一些启示:stackoverflow.com/a/28802951/284704。显然,只要 $location 服务以这种方式使用,Angular 将始终将 href 视为 ngApp 内的 URL/位置重写器。您必须使用 target="_self" 覆盖才能获得正常的链接行为。
    【解决方案2】:

    这是我最终解决这个问题的方法:

    模板:

    <a ng-title="{{title.text}}" ng-id="{{id.num}}" ng-click="go_to_item(id.num)">
        <span>{{title.text}}</span>
    </a>
    

    Javascript:

        $scope.go_to_item = function(display) {
            window.location = '/page.php#id:' + display;
            location.reload();
        };
    

    这在我们的应用程序中正常工作。不过,为什么 Angular 特有的 $location$window 在那里工作对我来说是个谜。我先尝试了这些,但他们没有这样做,所以如果有人能解释原因,我会给你这个问题的“接受答案”! ;-)

    【讨论】:

    • 嗨@code-sushi,你找到另一种方法了吗?也许使用和 AngularJS 配置..
    • 我在上面发布的代码,以“这就是我最终解决这个问题的方式”开头,是我发现这样做的方式。很难相信这只是 7 个月前的事——似乎是一辈子的事了!我没有在我当前的项目中使用 Angular,所以我不确定我今天是否会做不同的事情。随意分享任何对您有用的解决方案。编码愉快!
    • 我刚刚添加了另一种方法的解决方案,希望对某人有所帮助:)
    【解决方案3】:

    我试过你的代码,它对我有用:

    <script>
    $scope.title = {text: "test"};
    $scope.id = {num: 123};
    </script>
    
    <a ng-title="{{title.text}}" ng-id="{{id.num}}" ng-href="/page.php#param:{{id.num}}"><span>go here</span></a>
    

    变成这样:

    <a ng-title="test" ng-id="123" ng-href="/page.php#param:123" href="/page.php#param:123"><span>go here</span></a>
    

    【讨论】:

    • 但也许是因为当您单击它时您实际上并没有打开“/page.php”,因为它对我不起作用。我与一位同事商议,他确认我将不得不使用 ng-click 代替。如果我在其他人之前提出解决方案,我会在这里发布。不过感谢您的回复!
    【解决方案4】:

    我之前遇到过这个问题。由于某种原因,我不允许在 ng-controller 中包含 ng-href

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-07
      • 2013-03-31
      • 1970-01-01
      • 2015-03-06
      • 2014-09-29
      • 2015-07-05
      • 1970-01-01
      • 2017-05-10
      相关资源
      最近更新 更多