如果$ location.url == base(root)url,我如何使用ng-hide?

时间:2014-07-24 20:33:31

标签: angularjs ng-show ng-hide

我希望←返回主页链接显示在我的Angular应用程序的每个页面上除了主页之外的nagivation。所以我想有条件地添加链接并使用ng-hide隐藏它,如果网址已经在应用程序的主页(视图)上。

我尝试过使用angular $location服务但没有成功

<p ng-hide="location.hash == '#/'" class="container"><a href="#topics">&larr; Back to Home</a></p>

我尝试了以下变体:

ng-hide="location.hash == '#/' " //console.log shows true
ng-hide="location.hash === '#/' " //console.log shows true
ng-hide="location.hash == '' "    //console.log shows false

我很困惑,因为如果我在主页上记录location.hash == '#/'的值,我会true,所以ng-hide应该有效。

基本上我正在尝试这里列出的第三种方法: How do I use angular ng-hide based on the page/route that I am currently on?但它不起作用。对于我正在努力实现的目标,该页面上的另外两种方法看起来过于复杂。

我错过了什么?

2 个答案:

答案 0 :(得分:19)

首先,当你使用location.hash或location.url时,实际上你正在使用window.location javascript对象,你应该使用angular提供的$ location服务。 所以在你的控制器中我会创建:

$scope.currentPath = $location.path();

在你的HTML中:

<div ng-hide="currentPath === '/'"></div>

我会小心#34;#/&#34;和&#34; /&#34;,我只使用html5模式,因此我不确定$ location.path将返回什么,但您可以使用console.log($ location.path( ))我认为它只会返回&#34; /&#34;因为它是角度的路径,所以它不应该关心#。

答案 1 :(得分:0)

Angular正在寻找名为$scope的{​​{1}}变量。如果你希望这个工作,你将不得不这样做:

location

在您的控制器中。但是你应该真正注入$scope.location = window.location 并设置$location