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 相关文章推荐
javascript 混合的构造函数和原型方式,动态原型方式
Dec 07 Javascript
jQuery中[attribute]选择器用法实例
Dec 31 Javascript
jQuery实现Email邮箱地址自动补全功能代码
Nov 03 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
Sep 23 Javascript
angular4 如何在全局设置路由跳转动画的方法
Aug 30 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
Dec 14 Javascript
jQuery 筛选器简单操作示例
Oct 02 jQuery
JS寄快递地址智能解析的实现代码
Jul 16 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
Jul 17 Javascript
基于jquery实现彩色投票进度条代码解析
Aug 26 jQuery
jQuery实现tab栏切换效果
Dec 22 jQuery
11个Javascript小技巧帮你提升代码质量(小结)
Dec 28 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
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
2016/07/12 Javascript
全面介绍javascript实用技巧及单竖杠
2016/07/18 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
vue-axios使用详解
2017/05/10 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
Python聊天室实例程序分享
2016/01/05 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
使用Python进行二进制文件读写的简单方法(推荐)
2016/09/12 Python
Python编程实战之Oracle数据库操作示例
2017/06/21 Python
Python用户推荐系统曼哈顿算法实现完整代码
2017/12/01 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
Python如何实现远程方法调用
2020/08/07 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
python绘制汉诺塔
2021/03/01 Python
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
全球虚拟主机商:HostGator
2017/02/06 全球购物
英国在线汽车和面包车零件商店:Car Parts 4 Less
2018/08/15 全球购物
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
几个SQL的面试题
2014/03/08 面试题
微信营销策划方案
2014/02/24 职场文书
六五普法规划实施方案
2014/03/21 职场文书
利用html+css实现菜单栏缓慢下拉效果的示例代码
2021/03/30 HTML / CSS
2022微信温控新功能上线
2022/05/09 数码科技
MySQL 原理与优化之Update 优化
2022/08/14 MySQL