Angular JS/UI Router:为给定状态禁用指令
Angular JS/UI-Router: disable directives for a given state?
我有一个使用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-if
(或根据注释使用ng-show
):
<div header ng-if="app.isHeaderVisible()"></div>
页脚也是如此。
不要使用ng隐藏或控制器。Ui路由器有一个内置的功能。使用嵌套状态和嵌套视图可以根据您当前的状态显示/隐藏。看看这些链接:
- https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-嵌套视图
- https://github.com/angular-ui/ui-router/wiki/Multiple-Named-Views.
设置一个plunker,我帮你让它工作。
如果您对状态使用单独的控制器,您可以在每个控制器中设置布尔范围变量,然后使用这些和ng-show来控制显示的内容。
请使用角度ui-router
!!!
这是一种很好的风格来组织你的观点:
文件:https://github.com/angular-ui/ui-router
示例:http://angular-ui.github.io/ui-router/sample/#/
Controllers + ng-hide
不适合处理嵌套视图,因为DOM加载过多。因此,ui-route
被开发出来做这件事。虽然ng-hide
可以做这件事情,但ui路由甚至更好。
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 参数变量出现ngTable指令问题
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 事件和状态
- 使用每次都不同的transclude重复指令
- 打开一个模态并将其链接到AngularJS中的指令
- 获取选择框的状态
- 从html创建一个指令,该指令按类名应用函数
- 相位器状态未捕获参考错误
- Angular JS/UI Router:为给定状态禁用指令
- 如何正确控制Angular指令的$dirty和$pure状态
- 带有角度指令的三状态复选框
- Angularjs ng-repeat中的Angleularjs按钮加载状态指令
- 访问指令中的当前状态名称
- Angular ui路由器阻止指令内部的状态触发
- Angular指令mouseenter/mouseleave正在工作,但在mouseleave之后不会设置为初始状态
- 只在模糊状态下使用mwl-confirm指令
- 如何存储使用angular指令的手风琴的状态
- 如何在Angular中更改状态时停止指令代码的运行
- AngularJS——在一个页面上有更多相同的指令,并且有自己的状态