Angular用来控制元素的展示与否的原生指令介绍
在Angular的原生指令中有这几个指令用来控制元素的展示与否,ng-show/ng-hide/ng-if和ng-switch。
在angular性能优化中,我们也常常会用到它。
我们看下他们的区别。
其中ng-show和ng-hide是一样的,只不过ng-show是满足条件就展示,ng-hide是满足条件就隐藏,下面就不再提到ng-hide。

ng-show
ng-show接收的一个bool值,当为true的时候就会被触发去展示DOM节点。当ng-show的值为false的时候,在DOM节点上添加了一个ng-hide的一个类,这个类的表达式就是“display:none”。DOM load的时候ng-show里面的所有节点都会被加载。也就是说,ng-show仅仅是影藏和显示了DOM节点。也就意味如果油太多的ng-show指令,即使他们不显示,但他们所在的DOM节点还是会被渲染的。
ng-if
ng-if也接收的一个bool值,当它的值为false的时候,它所控制的节点并没有被创建或者说之前的DOM节点会被销毁掉,哪怕这个节点里面包含了很多ng的绑定都不会去执行。所以,我们在项目开发中,如果没有必要一次性加载完的dom就可以用ng-if来阻止ng事件发生,从而也就加快了dom的加载速度。特别是在repeat的时候,每条数据又包含了复杂的数据结构的时候效果特别明显。当它的值为true的时候,就会去创建DOM节点。
所以如果你用指令、模板来渲染额外的信息,例如通过点击来显示列表项的详细信息,一定要使用 ng-if(AngularJSv. 1.1.5以后)。它可阻止渲染(与ng-show相比)。
ng-switch
ng-switch的存在,让我们省去很多麻烦(应该说angular本身就这样)。比如我们之前用传统的方式去做一个tab选项卡。我们要一次次的循环然后在判断当前的状态最后再去执行相应的事情。在angular里面用ng-switch就非常的简单。ng-switch要先监听某一个变量,当此变量为什么值的时候下面就显示什么内容。如上面显示的,监听了type这么一个变量,当type的值等于‘aaa'的时候这块区域就会被创建并显示;当type的值等于‘bbb'的时候,之前'aaa'的dom全部会被销毁,然后'bbb'dom全部创建并显示。
例子 http://jsbin.com/hinehi/1/edit
- 整理AngularJS中的一些常用指令
- angularjs指令中的compile与link函数详解
- 学习AngularJs:Directive指令用法(完整版)
- AngularJS中的指令全面解析(必看)
- AngularJS学习笔记之ng-options指令
- Angularjs编写KindEditor,UEidtor,jQuery指令
- 用AngularJS的指令实现tabs切换效果
- 自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
- AngularJS基础 ng-include 指令示例讲解
- AngularJS ng-change 指令的详解及简单实例
- 详解AngularJS中自定义指令的使用
- AngularJS入门(用ng-repeat指令实现循环输出
- Angular 常用指令实例总结整理
相关文章
Angular.JS中的指令引用template与指令当做属性详解
这篇文章主要介绍了Angular.JS中的指令引用template与指令当做属性的相关资料,文中介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。2017-03-03
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
这篇文章主要介绍了解决angular的post请求后SpringMVC后台接收不到参数值问题的方法,感兴趣的小伙伴们可以参考一下2015-12-12
详解Angular 4.x NgTemplateOutlet
这篇文章主要介绍了详解Angular 4.x NgTemplateOutlet,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-05-05
@angular前端项目代码优化之构建Api Tree的方法
这篇文章主要介绍了@angular前端项目代码优化之构建Api Tree的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-12-12


最新评论