Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?

1.背景介绍

指令是一个Dom元素上的标签(和元素上的属性, CSS类样式一样,属于这个Dom元素)它告诉AngualrJS的HTML编译器,去附加一个行为到这个Dom元素上去,这个行为可以改变这个Dom元素,或者这个Dom元素的子元素。

AngularJS通过被称为指令的新属性来扩展HTML。AngularJS通过内置的指令来为应用添加功能。AngularJS内置指令是扩展的HTML属性,带有前缀ng-。

2.知识剖析

ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?

一、ng-if:

ng-if指令用于在表达式为false时移除HTML元素。如果ng-if语句执行的结果为true,会添加HTML元素,并显示。

ng-if指令不同于ng-hide/ng-show,ng-hide/ng-show是隐藏元素,设置元素的display为none。而ng-if是从DOM中移除元素。

ng-hide指令在表达式为true时隐藏指定的HTML元素。ng-show指令在表达式为true时显示指定的HTML元素。

二、ng-class:

ng-class指令用于给HTML元素动态绑定一个或多个CSS类。ng-class指令的值可以是字符串,对象,或一个数组。如果是字符串,多个类名使用空格分隔。

如果是对象,需要使用key-value对,key为你想要添加的类名,value是一个布尔值。只有在value为true时类才会被添加。

如果是数组,可以由字符串或对象组合组成,数组的元素可以是字符串或对象。

三、ng-option:

ng-options指令用于使用填充元素的选项。

ng-options属性可以在表达式中使用数组或对象来自动生成一个select中的option列表。ng-options与ng-repeat很相似,很多时候可以用ng-repeat来代替ng-options。但是ng-options提供了一些好处,例如减少内存提高速度,以及提供选择框的选项来让用户选择。

四、ng-value:

ng-value指令用于设置input或select元素的value属性。

和value相比,它的值可以是表达式,所以相比之下可以实现更多需求。比如当需要使用ng-repeat来动态生成input[]的时候,ngValue是很有用处的。

五、ng-click:

ng-click指令告诉了AngularJS HTML元素被点击后需要执行的操作。如果是使用ng-click来实现函数的执行的话,还可以进行传参。一个ng-click可以触发多个操作,先执行function1后执行function2

3.常见问题

一、ng-option表达式的写法

二、ng-class-odd和ng-class-even如何使用

4.解决方案

一、ng-option表达式的写法

ng-options的值可以是一个内涵表达式(comprehension expression),其实这只是一种有趣的说法,简单来说就是它可以接收一个数组或者对象,并对它们进行循环,将内部的内容提供给select标签内部的选项。它可以是一下两种形式。

1、数组作为数据源

用数组中的值做标签。(label for value in array)

用数组中的值作为选中的标签。(select as label for value in array)

用数组中的值做标签组。(label group by group for value in array)

用数组中的值作为选中的标签组。(select as label group by group for value in array track by trackexpr)

2、对象作为数据源

用对象的键-值(key-value)做标签。(label for (key , value) in object)

用对象的键-值作为选中的标签。(select as label for (key , value) in object)

用对象的键-值作为标签组。(label group by group for (key, value) in object)

用对象的键-值作为选中的标签组。(select as label group by group for (key, value) in ob)

二、ng-class-odd和ng-class-even如何使用

ng-class-odd指令用于为HTML元素动态的绑定一个或多个CSS类,但只作用于奇数行。

ng-class-even指令用于为HTML元素动态的绑定一个或多个CSS类,但只作用于偶数行。

需要与ng-repeat指令搭配使用。建议用在表格的样式渲染中,但是所有HTML元素都是支持的。

5.编码实战

Demo:见PPT

6.扩展思考

ng-if的作用域问题:

ng-if指令会创建一个子级作用域,因此,如果在ng-if指令中添加了元素,并向元素属性增加ng-model指令,那么ng-model指令对应的作用域属性子级作用域,而并非控制器注入的$scope作用域对象,这点在进行双向数据绑定时,需要引起注意。因此,解决ng-if中ng-model值无效的问题,主要方法就是在绑定值时添加$parent标识,或者用ng-show指令代替ng-if指令,这两种方法都可以达到同样的页面效果。

写法如下:ng-model="$parent.industry"

7.参考文献

参考一:菜鸟教程http://www.runoob.com/angularjs/angularjs-reference.html

参考二:[Angularjs]ng-select和ng-optionshttp://www.cnblogs.com/wolf-sun/p/4614532.html

8.更多讨论

用angularJS的ng-model绑定到select上,会自动增加一个value为空的option,这是为什么?

原因:如果ng-model所绑定的变量的值在ng-options绑定的value里面有,下拉选框中就不会有空白的一项,选中别的数据项以后消失;如果ng-model所绑定的变量的值不在ng-options绑定的value里面,下拉选框中就不会有空白一项,并且只有当ng-options绑定的value里有对应的text为空行时,这个空行才会一直存在于下拉选项里。

解决办法

方法一:将select中的一个option设置为空,就可以防止因添加ng-model自动添加空option的问题

方法二:自己预先添加一个value为空的option,再用ng-if="false"把它去掉

问题:1、ng-click可以在哪些元素上使用

           2、ng-if和ng-show的适用场景。


Angular js 常用指令_腾讯视频


PPT地址:https://ptteng.github.io/PPT/PPT/js-08-AngularJs%20common%20directive.html#/

视频地址:https://v.qq.com/x/page/w05083whpu3.html

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

下期预告:angular js常用指令ng-blur、ng-change、ng-focus、ng-disabled是如何运用到表单验证中的?不见不散~

------------------------------------------------------------------------------------------------------------------------

技能树.IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~

我的邀请码:96194340,或者你可以直接点击此链接:http://www.jnshu.com/login/1/96194340

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 大家好,我是IT修真院成都分院第7期的学员韩建名,一枚正直纯洁善良的WEB前端程序员。 今天给大家带来的是:ang...
    inh_阅读 465评论 0 1
  • 请勿对号入座 01 几年前参加过一个业余培训班,各行业各职业的职场人士都有。 一天老师看到我的介绍里写着HR,便问...
    瑨瑗阅读 731评论 3 2
  • 17.08.26删除了王者荣耀,一身轻松 删除了王者荣耀,我知道我要是什么,什么能够给我长久的收益
    恍然如誓阅读 169评论 0 0
  • 秋夜岑寂, 雪落一隅, 觉与醒的罅隙, 天与地的距离, 瑟瑟发抖的坠下, 碎在风里, 悲也是你, 喜也是你。
    凉薄念暖阅读 220评论 0 0
  • 亲爱的阿猫: 一个月又过去了,这个月感觉自己都不在状态上,隔三差五就会与我认为重要的人闹矛盾,还经常跳不出那个桎梏...
    木木子花阅读 291评论 0 0