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 22 Javascript
jQuery select的操作实现代码
May 06 Javascript
jQuery响应enter键的实现思路
Apr 18 Javascript
更快的异步执行(setTimeout多浏览器)
Aug 12 Javascript
jQuery中hasClass()方法用法实例
Jan 06 Javascript
纯JavaScript代码实现移动设备绘图解锁
Oct 16 Javascript
javascript获取wx.config内部字段解决微信分享
Mar 09 Javascript
Summernote实现图片上传功能的简单方法
Jul 11 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
Oct 10 Javascript
layer弹出层自定义提交取消按钮的例子
Sep 10 Javascript
vue框架中props的typescript用法详解
Feb 17 Javascript
在Vue中实现随hash改变响应菜单高亮
Mar 09 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
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
php cli模式学习(PHP命令行模式)
2013/06/03 PHP
PHP运用foreach神奇的转换数组(实例讲解)
2018/02/01 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
javascript 学习之旅 (2)
2009/02/05 Javascript
jquery 1.3.2 IE8中的一点点的小问题解决方法
2009/07/10 Javascript
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
Jquery图片滚动与幻灯片的实例代码
2013/04/08 Javascript
Javascript Web Slider 焦点图示例源码
2013/10/10 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
Vue利用History记录上一页面的数据方法实例
2018/11/02 Javascript
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
解决Vue中使用keepAlive不缓存问题
2020/08/04 Javascript
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
Python将阿拉伯数字转换为罗马数字的方法
2015/07/10 Python
python中列表和元组的区别
2017/12/18 Python
Python读取Word(.docx)正文信息的方法
2018/03/15 Python
解决python读取几千万行的大表内存问题
2018/06/26 Python
使用selenium模拟登录解决滑块验证问题的实现
2019/05/10 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
Python程序控制语句用法实例分析
2020/01/14 Python
python json 递归打印所有json子节点信息的例子
2020/02/27 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
2020/03/13 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
欧尚俄罗斯网上超市:Auchan俄罗斯
2018/05/03 全球购物
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
应届专科生个人的自我评价
2014/01/05 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
python for循环赋值问题
2021/06/03 Python
Python用tkinter实现自定义记事本的方法详解
2022/03/31 Python
Golang连接并操作MySQL
2022/04/14 MySQL