AngularJs:基于路由隐藏导航栏元素
AngularJs: Hide navbar element based on route?
我试图找出如何显示或隐藏一个元素在我的导航栏基于路由,或当前视图显示。例如,我有一个基本/高级切换按钮,我放在导航栏(Bootstrap 3),当用户是在搜索表单。但当他们在应用程序的其他地方切换按钮应该隐藏。
就DOM而言,它只是一个构建导航的列表项。我不确定我是否应该显示或隐藏基于在每个视图上设置的全局值,或者我是否可以只使用路由或视图名称。如果是这样,那将如何运作呢?
谢谢!
一种解决方案是在控制器中构建一个函数,该函数负责导航条,可以查询该函数以确定是否应该显示该元素:
$scope.isActive = function(viewLocation) {
return viewLocation === $location.path();
};
(上面的代码使用了Angular的$location服务)
然后在模板中,你可以根据调用的结果显示/隐藏(传入应该切换显示元素的路由):
ng-show="isActive('/search-form')"
下面是我使用ui-router的方法:
我只想在少数页面隐藏导航条,所以我在想要隐藏导航条的状态上使用了一个选择退出属性。
.state('photos.show', {
url: '/{photoId}',
views: {
"@" : {
templateUrl: 'app/photos/show/index.html',
controller: 'PhotoController'
}
},
hideNavbar: true
})
在导航栏的控制器中注入$state
,并将其暴露给模板:
$scope.state = $state;
然后将ng-hide
添加到导航条模板:
<nav ng-hide="state.$current.hideNavbar" ...
上面的工作完美使用ui-router不要忘记传递$scope
和$state
在你的功能
例子:
app.controller('LoginCtrl', function($scope, $state){
$scope.state = $state;
console.log($state); // this will return the current state object just in case you need to see whats going on for newbies like me :)
});
相关文章:
- 显示放大镜弹出窗口时隐藏导航内容
- 导航栏隐藏在图片后面
- 在离子滚动时隐藏离子导航栏
- jquery导航显示和隐藏多个页面
- 使用 JavaScript 显示和隐藏导航栏进行滚动和悬停功能
- 如果导航选项卡内容为空,则无法隐藏导航选项卡
- 如何让我的移动菜单按钮显示和隐藏导航栏,以及在负空间中单击时隐藏
- AngularJS - 如果用户登录,则显示/隐藏导航项
- 更改屏幕时隐藏导航栏上的元素's宽度
- 在IE中工作的自动隐藏导航栏
- 如果路由是登录的,如何在应用程序模板中隐藏导航栏
- 单击后隐藏导航菜单
- 使用Headroom JS来隐藏导航条,并在需要时显示
- 如何隐藏导航条时,当覆盖出现
- 如何隐藏导航的左和右基于第一个和最后一个
- 自动显示和隐藏导航栏
- AngularJs:基于路由隐藏导航栏元素
- 只有在移动设备中,才能在向下滚动时隐藏导航并在向上滚动时显示
- 自动显示/隐藏导航改变颜色时,滚动
- 高级jquery循环隐藏导航