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可访问其它域名的cookie的方法
Sep 18 Javascript
js实现杯子倒水问题自动求解程序
Mar 25 Javascript
JS实现下拉框的动态添加(附效果)
Apr 03 Javascript
javascript中关于&& 和 || 表达式的小技巧分享
Apr 10 Javascript
javascript中利用柯里化函数实现bind方法
Apr 29 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
May 26 Javascript
Angualrjs和bootstrap相结合实现数据表格table
Mar 30 Javascript
Echarts基本用法_动力节点Java学院整理
Aug 11 Javascript
基于JavaScript实现幸运抽奖页面
Jul 05 Javascript
JS监听事件的叠加和移除功能
Nov 19 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
Apr 17 Javascript
解决vant中 tab栏遇到的坑 van-tabs
Nov 04 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
session 的生命周期是多长
2006/10/09 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
PHP实现过滤各种HTML标签
2015/05/17 PHP
简单谈谈 php 文件锁
2017/02/19 PHP
PHP删除字符串中非字母数字字符方法总结
2019/01/20 PHP
php上传图片并给图片打上透明水印的代码
2010/06/07 Javascript
JavaScript 打地鼠游戏代码说明
2010/10/12 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
javascript实现数独解法
2015/03/14 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
2016/02/19 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
对VUE中的对象添加属性
2018/09/18 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
2018/09/21 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
2018/09/28 Javascript
微信小程序实现复选框效果
2018/12/28 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
p5.js实现简单货车运动动画
2019/10/23 Javascript
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
Python中的rfind()方法使用详解
2015/05/19 Python
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
python使用Pandas库提升项目的运行速度过程详解
2019/07/12 Python
python将音频进行变速的操作方法
2020/04/08 Python
纯CSS3实现8组超炫酷鼠标滑过图片动画
2016/03/16 HTML / CSS
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
中医专业应届生求职信
2013/11/17 职场文书
会计专业应届生自荐信
2014/02/07 职场文书
装修设计师求职信
2014/02/26 职场文书
关于读书的演讲稿
2014/05/07 职场文书
劳资员岗位职责
2015/02/13 职场文书
面试通知单大全
2015/04/20 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
2022/04/21 Python
python实现学生信息管理系统(面向对象)
2022/06/05 Python