首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何根据我当前所在的页面/路由使用angular ng-hide?

如何根据我当前所在的页面/路由使用angular ng-hide?
EN

Stack Overflow用户
提问于 2014-03-12 07:18:00
回答 2查看 37.8K关注 0票数 18

我有一个角度应用程序,我想隐藏一个‘包含的视图’,如果主视图是主页视图。

代码语言:javascript
复制
<div id="page" ng-class="{ showNav: $root.showNav }">
    <header id="pageHeader" ng-controller="HeaderCtrl" data-ng-include="'views/includes/header.html'"></header>
    <div id="pageHero" ng-show='$rootScope.fullView' ng-controller="MainsearchCtrl" data-ng-include="'views/mainSearch.html'"></div>
    <div id="pageContent" ng-view=""></div>
</div>
EN

回答 2

Stack Overflow用户

发布于 2014-03-12 07:53:07

只需将ng-show与否定表达式一起使用:

代码语言:javascript
复制
<div id=includedView ng-view="included" ng-show="location != '/main'"></div>

您必须在控制器中的控制器$scope上设置location的值;可以使用$route$location提供程序。

票数 5
EN

Stack Overflow用户

发布于 2014-03-12 08:01:32

如果您使用路由,则可以在routeprovider的resolve块中对每个路由更改运行一些逻辑。

在下面的示例中,我使用了一个存储位置并在$rootScope上广播事件的自定义SystemService服务。在此示例中,导航位于路由控制器管理的视图之外,并具有自己的控制器:

代码语言:javascript
复制
app.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
      when('/', {
      templateUrl: 'partials/welcome.html',
      controller: 'WelcomeCtrl',
      resolve: {
        load: function(SystemService){            
          SystemService.fireNavEvent({showNav:false,location:'/'});            
        }
      }
    }).
    when('/other', {
      templateUrl: 'partials/other.html',
      controller: 'ElseCtrl',
      resolve: {
        load: function(SystemService){            
          SystemService.fireNavEvent({showNav:true,location:'/other'});            
        }
      }
    }).
    otherwise({
      redirectTo: '/'
  });
}]);

//在SystemServce中:

代码语言:javascript
复制
function fireNavEvent(obj){
    this.showNav = obj.showNav;
    $rootScope.$broadcast('navEvent',obj);
}

//然后在导航控制器中:

代码语言:javascript
复制
$scope.$on("navEvent", function(evt,args){
  $scope.showNav = SystemService.showNav;
  // also some logic to set the active nav item based on location
});

还有其他方法可以实现这一点,例如,您可以直接从路由配置中直接在$rootScope上广播导航更改。

您还可以将$location注入到控制器中,并基于此设置可见性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22338743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档