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的Eval函数
Jul 26 Javascript
关于JS中的方法是否加括号的问题
Jul 27 Javascript
AngularJS通过$http和服务器通信详解
Sep 21 Javascript
JavaScript 最佳实践:帮你提升代码质量
Dec 03 Javascript
vuejs指令详解
Feb 07 Javascript
JavaScript登录记住密码操作(超简单代码)
Mar 22 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
Sep 14 Javascript
基于jquery实现九宫格拼图小游戏
Nov 30 jQuery
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
Sep 26 Javascript
微信小程序实现导航栏和内容上下联动功能代码
Jun 29 Javascript
如何利用JavaScript编写更好的条件语句详解
Aug 10 Javascript
JavaScript原型链详解
Nov 07 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
php 生成WML页面方法详解
2009/08/09 PHP
php 代码优化之经典示例
2011/03/24 PHP
PHP优于Node.js的五大理由分享
2012/09/15 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
指定位置如果有图片显示图片,无图片显示广告的JS
2010/06/05 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
AngularJS+Bootstrap3多级导航菜单的实现代码
2017/08/16 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
自定义PC微信扫码登录样式写法
2017/12/12 Javascript
vue中添加mp3音频文件的方法
2018/03/02 Javascript
详解webpack 入门与解析
2018/04/09 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
Python语言生成水仙花数代码示例
2017/12/18 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
Python实现FTP弱口令扫描器的方法示例
2019/01/31 Python
详解python中*号的用法
2019/10/21 Python
pycharm 中mark directory as exclude的用法详解
2020/02/14 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
python爬虫中抓取指数的实例讲解
2020/12/01 Python
极简的HTML5模版
2015/07/09 HTML / CSS
生日派对邀请函
2014/01/13 职场文书
公司副总经理任命书
2014/06/05 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
python中os.path.join()函数实例用法
2021/05/26 Python
SQL 聚合、分组和排序
2021/11/11 MySQL