Angular用来控制元素的展示与否的原生指令介绍


Posted in Javascript onJanuary 07, 2015

在Angular的原生指令中有这几个指令用来控制元素的展示与否,ng-show/ng-hide/ng-if和ng-switch。

在angular性能优化中,我们也常常会用到它。

我们看下他们的区别。

其中ng-show和ng-hide是一样的,只不过ng-show是满足条件就展示,ng-hide是满足条件就隐藏,下面就不再提到ng-hide。

Angular用来控制元素的展示与否的原生指令介绍

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

Javascript 相关文章推荐
js form action动态修改方法
Nov 04 Javascript
js对数字的格式化使用说明
Jan 12 Javascript
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
Oct 31 Javascript
js有序数组的连接问题
Oct 01 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
Oct 30 Javascript
js实现的在线调色板功能完整实例
Dec 21 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
Jul 04 Javascript
Angular简单验证功能示例
Dec 22 Javascript
微信小程序实现折叠面板
Jan 31 Javascript
angular4 共享服务在多个组件中数据通信的示例
Mar 30 Javascript
python虚拟环境 virtualenv的简单使用
Jan 21 Javascript
Ajax 的初步实现(使用vscode+node.js+express框架)
Jun 18 Javascript
jQuery中children()方法用法实例
Jan 07 #Javascript
angular.element方法汇总
Jan 07 #Javascript
jQuery中slice()方法用法实例
Jan 07 #Javascript
angularJS中$apply()方法详解
Jan 07 #Javascript
jQuery中not()方法用法实例
Jan 06 #Javascript
jQuery中has()方法用法实例
Jan 06 #Javascript
jQuery中map()方法用法实例
Jan 06 #Javascript
You might like
php htmlspecialchars加强版
2010/02/16 PHP
php cache类代码(php数据缓存类)
2010/04/15 PHP
探讨PHP中this,self,parent的区别详解
2013/06/08 PHP
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
CI框架验证码CAPTCHA辅助函数用法实例
2014/11/05 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
通过JAVASCRIPT读取ASP设定的COOKIE
2006/11/24 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
js中Number数字数值运算后值不对的解决方法
2017/02/28 Javascript
微信小程序中子页面向父页面传值实例详解
2017/03/20 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
详解Nuxt.js Vue服务端渲染摸索
2018/02/08 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
小程序api实现promise封装过程解析
2019/11/21 Javascript
Python Web服务器Tornado使用小结
2014/05/06 Python
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
python的pdb调试命令的命令整理及实例
2017/07/12 Python
在Mac下使用python实现简单的目录树展示方法
2018/11/01 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
2019/12/12 Python
Python extract及contains方法代码实例
2020/09/11 Python
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
医学专业大学生求职信
2014/07/12 职场文书
师德自我剖析材料范文
2014/10/06 职场文书
教师个人师德总结
2015/02/06 职场文书
应聘教师求职信范文
2015/03/20 职场文书
2015年党支部书记工作总结
2015/05/21 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
经典法律座右铭(50句)
2019/08/15 职场文书
读《推着妈妈去旅行》有感1500字
2019/10/15 职场文书
CSS使用伪类控制边框长度的方法
2022/01/18 HTML / CSS
Docker部署Mysql8的实现步骤
2022/07/07 Servers