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
JS 动态加载脚本的4种方法
May 05 Javascript
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
Jul 31 Javascript
EasyUI 中 MenuButton 的使用方法
Jul 14 Javascript
简体中文转换繁体中文(实现代码)
Dec 25 Javascript
jquery的总体架构分析及实现示例详解
Nov 08 Javascript
jquery实现定时自动轮播特效
Dec 10 Javascript
javascript每日必学之基础入门
Feb 16 Javascript
javascript实现日期三级联动下拉框选择菜单
Dec 03 Javascript
微信小程序 实现点击添加移除class
Jun 12 Javascript
微信小程序 input输入及动态设置按钮的实现
Oct 27 Javascript
微信小程序如何调用图片接口API并居中显示
Jun 29 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
实用函数3
2007/11/08 PHP
PHP Token(令牌)设计
2008/03/15 PHP
PHP不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
js实现简单模态窗口,背景灰显
2008/11/14 Javascript
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
Wordpress ThickBox 添加“查看原图”效果代码
2010/12/11 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
xmlplus组件设计系列之网格(DataGrid)(10)
2017/05/05 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
12个提高JavaScript技能的概念(小结)
2019/05/09 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
[16:19]教你分分钟做大人——风暴之灵
2015/03/11 DOTA
python创建进程fork用法
2015/06/04 Python
python对json的相关操作实例详解
2017/01/04 Python
浅谈python中列表、字符串、字典的常用操作
2017/09/19 Python
python实现对文件中图片生成带标签的txt文件方法
2018/04/27 Python
python spyder中读取txt为图片的方法
2018/04/27 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
Python学习笔记之图片人脸检测识别实例教程
2019/03/06 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
python实现逻辑回归的示例
2020/10/09 Python
国外平面设计第一市场:99designs
2016/10/25 全球购物
英国现代、当代和设计师家具店:Furntastic
2020/07/18 全球购物
新学期开学寄语
2014/01/18 职场文书
代理商会议邀请函
2014/01/27 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
室内设计专业自荐信
2014/05/31 职场文书
客服专员岗位职责范本
2015/04/07 职场文书
2015年税务稽查工作总结
2015/05/26 职场文书
解读Vue组件注册方式
2021/05/15 Vue.js