我在AngularJS
应用中有一个全局菜单。我不想在某些路径上显示某些链接。我尝试了以下内容。在我的控制器中:
$scope.location = $location;
在我看来:
<div ng-if="location.path() != /signup">
[Content]
</div>
但我无法让它发挥作用。有什么想法吗?
另外,有没有办法以某种方式打印页面上的当前路径?
答案 0 :(得分:12)
你应该看看“ng-show”和“ng-hide”。它们可以非常容易地用于有条件地显示和隐藏页面上的内容。一个例子是:
<div ng-show="myBoolean">Content will show when myBoolean is true</div>
您可以通过调用范围中的函数来替换“myBoolean”,该函数将检查路径或执行您需要检查的任何内容。我相信这应该或多或少地做你想要的!有关ng-show see here的更多文档。
如果文档或我的例子难以阅读,我会尽快为你写一个plunkr(http://plnkr.co/edit/6fUZDzzGsRjowPOJZ6He?p=preview)。基本上这只是展示了如何使用ng-hide / ng-show指令(它们是相同的,只是彼此相反)。我写的关键例程是:
$scope.checkToggle = function(){
// replace "myBoolean" with the logic that checks the path
return $scope.myBoolean;
};
只需将该逻辑替换为您要检查的位置,它应该隐藏/显示正确。使用这个特定指令的真正好处是你可以轻松地支持css动画/过渡,这将允许你在隐藏和显示它时很好地淡化你的元素进出页面。希望这一切都有帮助。祝你好运!
答案 1 :(得分:4)
只需引用您将变量与之比较的字符串:
<div ng-if="location.path() != '/signup'">
[Content]
</div>
正如drew_w所说,您应该尝试ng-show
,因为您正在使用$location
,您可能正在创建一个单页应用,其中重新加载DOM的效率低于隐藏或显示它。
要打印它,只需输入
即可{{location.path()}}
您的$scope.location
控制器的任何位置都有效。