2014-08-29 34 views
7

我已经检查了文档和ng-href not working线程已经在这里,但我很难过。AngularJS ng-href不会去链接

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;我可以在地址栏中点击“enter”,它将“去那里” ),它实际上并没有转到那个页面。

怎么回事?我需要将此与某种ng-click结合吗?如果是这样,为什么?

更新:链接将从它被调用的同一页面,但为不同的数据记录显示使用不同的参数。我认为,可能有一些用它做...

回答

1

这里是我如何结束解决了这一个:

模板:

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

这是工作,因为它应该在我们的应用程序。为什么角具体$location$window不要工作对我来说是一个谜,但。我先试了一下,但他们没有这样做,所以如果有人能解释为什么,我会给你“接受答案”这个问题! ;-)

+0

嗨@代码寿司,你有没有找到另一种方式来做到这一点?也许使用和AngularJS配置.. – 2015-04-17 16:42:41

+1

我上面发布的代码,从“这是我最终解决这个问题”开始,是我发现要做到这一点的方式。很难相信这只是7个月前 - 似乎是一生之前!我在当前的项目中没有使用Angular,所以我不确定我今天是否会以不同的方式做它。随意分享任何适合你的解决方案。快乐的编码! – 2015-04-20 21:11:14

+0

我刚刚添加了一个解决方案,以另一种方式来做到这一点,我希望它对某人有所帮助:) – 2015-04-20 21:54:53

0

我想你的代码,它的工作对我来说:

<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> 
+0

但也许是因为您点击它时实际上并未打开“/page.php”,因为它不适合我。我与同事确认我将不得不使用ng-click代替。如果我在别人面前提出解决方案,我会在这里发布。尽管欣赏你的回应! – 2014-08-29 19:18:05

8

要做到这一点最简单的方法是添加目标=“_自我”,你的情况是这样的解决方案:

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

没有NG单击并没有AngularJS功能是必需的。

+0

当我可以设置测试用例场景时,我将不得不尝试一下。由于我改变了工作,所以我无法访问最初引发这个问题的前一个项目。感谢您的建议。 – 2015-04-21 17:13:50

+0

这个答案提供了一些亮点:http://stackoverflow.com/a/28802951/284704。显然,只要$ location服务正在以这种方式使用,Angular将始终将href作为ngApp中的URL /位置重写器对待。你必须用target =“_ self”来覆盖才能获得正常的链接行为。 – 2017-04-11 21:52:38

-5

我以前有过这个问题。出于某种原因,我不允许ng-hrefng-controller之内。