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 相关文章推荐
jquery重新播放css动画所遇问题解决
Aug 21 Javascript
Javascript Web Slider 焦点图示例源码
Oct 10 Javascript
javascript通过className来获取元素的简单示例代码
Jan 10 Javascript
JavaScript中的Web worker多线程API研究
Dec 06 Javascript
Jquery简单分页实现方法
Jul 24 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
Sep 22 Javascript
纯jQuery实现前端分页功能
Mar 23 jQuery
js图片加载效果实例代码(延迟加载+瀑布流加载)
May 12 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
Dec 04 Javascript
vscode 开发Vue项目的方法步骤
Nov 25 Javascript
js模拟实现百度搜索
Jun 28 Javascript
Vue如何清空对象
Mar 03 Vue.js
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 cookie 登录验证示例代码
2009/03/16 PHP
PHP 万年历实现代码
2012/10/18 PHP
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
2010/06/28 Javascript
读jQuery之五(取DOM元素)
2011/06/20 Javascript
jquery乱码与contentType属性设置问题解决方案
2013/01/07 Javascript
JavaScript Array对象扩展indexOf()方法
2014/05/09 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
2016/03/14 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
EsLint入门学习教程
2017/02/17 Javascript
微信小程序 图片绝对定位(背景图片)
2017/04/05 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
浅谈JavaScript 声明提升
2020/09/14 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
[49:11]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.20
2020/12/23 DOTA
Python每天必学之bytes字节
2016/01/28 Python
python实现简单tftp(基于udp协议)
2018/07/30 Python
Python实现多属性排序的方法
2018/12/05 Python
Python流行ORM框架sqlalchemy安装与使用教程
2019/06/04 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
2020/02/26 Python
Python中格式化字符串的四种实现
2020/05/26 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
柯基袜:Corgi Socks
2017/01/26 全球购物
临床专业自荐信
2014/06/22 职场文书
乡镇保密工作责任书
2014/07/28 职场文书
安全生产工作汇报
2014/10/28 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
读完《骆驼祥子》的观后感!
2019/07/05 职场文书
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL
mysql的单列多值存储实例详解
2022/04/05 MySQL
JavaScript实现音乐播放器
2022/08/14 Javascript