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 相关文章推荐
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
Nov 30 Javascript
利用js 进行输入框自动匹配字符的小例子
Jun 29 Javascript
jquery基础教程之deferred对象使用方法
Jan 22 Javascript
JS继承用法实例分析
Feb 05 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
Mar 23 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
Nov 30 Javascript
jQuery实现打开页面渐现效果示例
Jul 27 Javascript
详解JS中的柯里化(currying)
Aug 17 Javascript
JS实现点击按钮可实现编辑功能
Jul 03 Javascript
爬虫利器Puppeteer实战
Jan 09 Javascript
浅谈webpack构建工具配置和常用插件总结
May 11 Javascript
解决vue中el-tab-pane切换的问题
Jul 19 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
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
PHP的error_reporting错误级别变量对照表
2014/07/08 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
2019/10/15 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
JQuery读取XML文件数据并显示的实现代码
2009/12/16 Javascript
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
再论Javascript的类继承
2011/03/05 Javascript
用jquery中插件dialog实现弹框效果实例代码
2013/11/15 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
js如何判断输入字符串长度
2015/12/16 Javascript
js+flash实现的5图变换效果广告代码(附演示与demo源码下载)
2016/04/01 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
2019/08/08 Javascript
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
[35:43]2018DOTA2亚洲邀请赛 4.1 小组赛B组 paiN vs Effect
2018/04/03 DOTA
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
美国购买新书和二手书网站:Better World Books
2018/10/31 全球购物
成教自我鉴定
2013/10/27 职场文书
大学生的应聘自我评价
2013/12/13 职场文书
打架检讨书100字
2014/01/08 职场文书
高一政治教学反思
2014/01/28 职场文书
会计助理岗位职责
2014/02/17 职场文书
复兴之路纪录片观后感
2015/06/02 职场文书
大学毕业谢师宴致辞
2015/07/27 职场文书
Vue如何清空对象
2022/03/03 Vue.js