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 相关文章推荐
地震发生中逃生十大法则
May 12 Javascript
JavaScript编程开发中的五个实用小技巧
Jul 22 Javascript
基于jQuery实现左右div自适应高度完全相同的代码
Aug 09 Javascript
JS中表单的使用小结
Jan 11 Javascript
用js的document.write输出的广告无阻塞加载的方法
Jun 05 Javascript
jquery插件ContextMenu设置右键菜单
Mar 13 Javascript
基于node.js制作简单爬虫教程
Jun 29 Javascript
使用JS获取SessionStorage的值
Jan 12 Javascript
Vue引入jquery实现平滑滚动到指定位置
May 09 jQuery
vue 1.0 结合animate.css定义动画效果
Jul 11 Javascript
如何在项目中使用log4.js的方法步骤
Jul 16 Javascript
完美解决通过IP地址访问VUE项目的问题
Jul 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
虹吸壶煮咖啡26个注意事项
2021/03/03 冲泡冲煮
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
PHP实现多图片上传类实例
2014/07/26 PHP
PHP生成网站桌面快捷方式代码分享
2014/10/11 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
javascript+dom树型菜单类,希望朋友们一起进步
2007/05/03 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
常用js字符串判断方法整理
2013/10/18 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
jQuery实现的多滑动门,多选项卡效果代码
2016/03/28 Javascript
轻松掌握JavaScript享元模式
2016/08/27 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
Vue.js进行查询操作的实例详解
2017/08/25 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
2019/09/16 Javascript
vue-cli3.0实现一个多页面应用的历奇经历记录总结
2020/03/16 Javascript
js实现轮播图特效
2020/05/28 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
大专应届生个人的自我评价
2013/11/21 职场文书
领导视察欢迎词
2014/01/15 职场文书
《美丽的小路》教学反思
2014/02/26 职场文书
开发房地产协议书
2014/09/14 职场文书
部门群众路线教育实践活动对照检查材料思想汇报
2014/10/07 职场文书
办理收楼委托书范本
2014/10/09 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
房屋维修申请报告
2015/05/18 职场文书
Python+uiautomator2实现自动刷抖音视频功能
2021/04/29 Python