Javascript Angular JS/UI路由器:禁用给定状态的指令?

Javascript Angular JS/UI路由器:禁用给定状态的指令?,javascript,angularjs,angularjs-directive,angular-ui-router,Javascript,Angularjs,Angularjs Directive,Angular Ui Router,我有一个使用UI路由器的Angular 1.3应用程序。我有一个页面视图和一个页眉指令,还有一个页脚指令 <body ng-controller="AppCtrl as app"> <!-- header --> <div header></div> <!-- content --> <div ui-view=""></div> <!-- FOOTER --> <div footer>

我有一个使用UI路由器的Angular 1.3应用程序。我有一个页面视图和一个页眉指令,还有一个页脚指令

<body ng-controller="AppCtrl as app">

<!-- header -->
<div header></div>

<!-- content -->
<div ui-view=""></div>

<!-- FOOTER -->
<div footer></div>


我的应用程序中有一些状态不想显示页眉和/或页脚。如何做到这一点?

在控制器中实现一种方法,该方法决定报头在给定状态下是否可见,例如

.controller('AppCtrl', function() {
    this.isHeaderVisible = function() {
        return ...// your logic here
    }
});
然后根据注释使用
ng(或
ng show
):



页脚也是如此。

如果要为状态使用单独的控制器,可以在每个状态中设置布尔范围变量,然后使用这些变量和ng show来控制显示的内容。

不要使用ng hide或控制器。Ui路由器有一个内置的功能来实现这一点。使用嵌套状态和嵌套视图根据当前的状态显示/隐藏。 请看以下链接:


设置一个plunker,我会帮你让它工作。

请使用angular
ui路由器

这是一种很好的组织视图的方式:

文件:

示例:


Controllers+ng hide
无法很好地处理嵌套视图,因为DOM可能加载过多。因此,
ui-route
就是为此而开发的。尽管可以使用
ng hide
,但ui路由更好。

使用
ng hide
ng show
并设置控制器因某种原因不工作时的可见性。在我的页面控制器中,我有一个函数,它返回
true
。然后,在指令中我有
。虽然控制台日志确认函数返回true,但标题仍然显示;这是您遗漏的一些小细节。这似乎只适用于积极因素:
ng if
ng show
。这将需要我向每个控制器添加变量,而不是只将它隐藏的控制器设置为false
ng hide
似乎不起作用,设置类似
ng show=“!hideHeaderFooter”
的测试也不起作用。唯一有效的方法是
ng show=“showHeaderFooter”
,它要求在一个屏幕上设置该值为true,在任何地方设置为false。有没有办法让条件只响应一个控制器/状态?谢谢。我为我的应用程序的给定部分上传了路由器。我可以看到如何添加新视图(我将它们添加到父状态),但现在我不确定如何将原始视图重新集成到主视图
<div header ng-if="app.isHeaderVisible()"></div>