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事件实现代码
Mar 12 Javascript
jquery中animate动画积累的解决方法
Oct 05 Javascript
asm.js使用示例代码
Nov 28 Javascript
Javascript改变CSS样式(局部和全局)
Dec 18 Javascript
js模拟C#中List的简单实例
Mar 06 Javascript
JS显示下拉列表框内全部元素的方法
Mar 31 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
Aug 22 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
Apr 29 Javascript
vue组件watch属性实例讲解
Nov 07 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
Mar 01 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
Jan 24 jQuery
详解webpack的clean-webpack-plugin插件报错
Oct 16 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
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
php的闭包(Closure)匿名函数详解
2015/02/22 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
2017/06/19 PHP
php基于session锁防止阻塞请求的方法分析
2017/08/07 PHP
JavaScript 对象模型 执行模型
2009/12/06 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
jQuery实现获取table表格第一列值的方法
2016/03/01 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
Angular4学习教程之HTML属性绑定的方法
2018/01/04 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
2018/07/06 Javascript
js中时间格式化的几种方法
2018/07/22 Javascript
Vue formData实现图片上传
2019/08/20 Javascript
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
Python字符串处理实例详解
2017/05/18 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
手把手教你使用Python创建微信机器人
2019/04/29 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
Foot Locker意大利官网:全球领先的运动鞋和服装零售商
2017/05/30 全球购物
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
25岁生日感言
2014/01/13 职场文书
手机促销活动方案
2014/02/05 职场文书
酒店行政人事部经理职务说明书
2014/02/26 职场文书
幼儿园毕业典礼主持词
2014/03/21 职场文书
党支部活动策划方案
2014/08/18 职场文书
领导班子专题民主生活会情况想汇报
2014/09/30 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
国情备忘录观后感
2015/06/04 职场文书
《云雀的心愿》教学反思
2016/02/23 职场文书
升职自荐书
2019/05/09 职场文书