【Js-008】angular js 常用指令ng-if、ng-class庐椒、ng-option椒舵、ng-value、ng-click是如何使用的约谈?

大家好笔宿,我是IT修真院北京分院第27期學(xué)員,一枚正直善良的前端程序員今天跟大家分享一下前端知識點棱诱。

今天講下深度思考中的知識點

————angular?js?常用指令ng-if泼橘、ng-class、ng-option迈勋、ng-value炬灭、ng-click是如何使用的?

1.背景介紹

指令是一個Dom元素上的標(biāo)簽(和元素上的屬性, CSS 類樣式一樣靡菇,屬于這個Dom元素)重归,

? ? 它告訴AngualrJS的HTML 編譯器,去附加一個行為到這個Dom元素上去厦凤,

? ? 這個行為可以改變這個Dom元素鼻吮,或者這個Dom元素的子元素。

AngularJS 通過被稱為 指令 的新屬性來擴展 HTML较鼓。

AngularJS 通過內(nèi)置的指令來為應(yīng)用添加功能椎木。

? ? AngularJS 內(nèi)置指令是擴展的 HTML 屬性,帶有前綴 ng-博烂。

2.知識剖析

ng-if拓哺、ng-class、ng-option脖母、ng-value、ng-click是如何使用的闲孤?

ng-if 指令用于在表達式為 false 時移除 HTML 元素谆级。

如果 ng-if 語句執(zhí)行的結(jié)果為 true烤礁,會添加HTML元素,并顯示肥照。

ng-if 指令不同于 ng-hide/ng-show脚仔, ng-hide/ng-show是隱藏元素,設(shè)置元素的 display 為 none。而 ng-if 是從 DOM 中移除元素舆绎。

ng-hide 指令在表達式為 true 時隱藏指定的 HTML 元素鲤脏。

ng-show 指令在表達式為 true 時顯示指定的 HTML 元素。

ng-class 指令用于給 HTML 元素動態(tài)綁定一個或多個 CSS 類吕朵。

ng-class 指令的值可以是字符串猎醇,對象,或一個數(shù)組努溃。

如果是字符串硫嘶,多個類名使用空格分隔。

如果是對象梧税,需要使用 key-value 對沦疾,key 為你想要添加的類名,value 是一個布爾值第队。只有在 value 為 true 時類才會被添加哮塞。

如果是數(shù)組,可以由字符串或?qū)ο蠼M合組成凳谦,數(shù)組的元素可以是字符串或?qū)ο蟆?/p>

ng-options 指令用于使用 <options> 填充 <select> 元素的選項忆畅。

ng-options屬性可以在表達式中使用數(shù)組或?qū)ο髞碜詣由梢粋€select中的option列表。ng-options與ng-repeat很相似晾蜘,很多時候可以用ng-repeat來代替ng-options邻眷。但是ng-options提供了一些好處,例如減少內(nèi)存提高速度剔交,以及提供選擇框的選項來讓用戶選擇肆饶。

ng-value 指令用于設(shè)置 input 或 select 元素的 value 屬性。

和value相比岖常,它的值可以是表達式驯镊,所以相比之下可以實現(xiàn)更多需求。

比如當(dāng)需要使用ng-repeat來動態(tài)生成input[]的時候竭鞍,ngValue是很有用處的板惑。

ng-click 指令告訴了 AngularJS HTML 元素被點擊后需要執(zhí)行的操作。

如果是使用ng-click來實現(xiàn)函數(shù)的執(zhí)行的話偎快,還可以進行傳參冯乘。

一個ng-click可以觸發(fā)多個操作,

<button ng-click="function1();function2()"></button>

先執(zhí)行function1后執(zhí)行function2

3.常見問題

ng-option表達式的寫法晒夹?

4.解決方案

1裆馒、ng-option表達式的寫法

ng-options的值可以是一個內(nèi)涵表達式(comprehension expression)姊氓,

其實這只是一種有趣的說法,簡單來說就是它可以接收一個數(shù)組或者對象喷好,

? ? 并對它們進行循環(huán)翔横,將內(nèi)部的內(nèi)容提供給select標(biāo)簽內(nèi)部的選項。它可以是一下兩種形式梗搅。

1禾唁、數(shù)組作為數(shù)據(jù)源

用數(shù)組中的值做標(biāo)簽。(label for value in array)

用數(shù)組中的值作為選中的標(biāo)簽无切。(select as label for value in array)

用數(shù)組中的值做標(biāo)簽組荡短。(label group by group for value in array)

用數(shù)組中的值作為選中的標(biāo)簽組。(select as label group by group for value in array track by trackexpr)

2订雾、對象作為數(shù)據(jù)源

用對象的鍵-值(key-value)做標(biāo)簽肢预。(label for (key , value) in object)

用對象的鍵-值作為選中的標(biāo)簽。(select as label for (key , value) in object)

用對象的鍵-值作為標(biāo)簽組洼哎。(label group by group for (key, value) in object)

用對象的鍵-值作為選中的標(biāo)簽組烫映。(select as label group by group for (key, value) in ob)

5.擴展思考

ng-if的作用域問題

ng-if指令會創(chuàng)建一個子級作用域,因此噩峦,如果在ng-if指令中添加了元素锭沟,

? ? ? ? 并向元素屬性增加 ng-model指令,那么ng-model指令對應(yīng)的作用域?qū)傩?/p>

? ? ? ? 子級作用域识补,而并非控制器注入的$scope作用域?qū)ο笞寤矗@點在進行雙向數(shù)

據(jù)綁定時,需要引起注意凭涂。

因此祝辣,解決ng-if中ng-model值無效的問題,主要方法就是在綁定值時添加$parent標(biāo)識切油,

? ? 或者用ng-show指令代替ng-if指令蝙斜,這兩種方法都可以達到同樣的頁面效果。

寫法如下:

ng-model="$parent.industry"

6.參考文獻

p>參考一:菜鳥教程

參考二:[Angularjs]ng-select和ng-options

7.更多討論

Q1:提問人:

用angularJS的ng-model綁定到select上澎胡,會自動增加一個value為空的option,這是為什么孕荠?

A1:回答人:李浩

回答:

原因:ng-model沒有初始化導(dǎo)致的,

? ? 如果ng-model所綁定的變量的值在ng-options綁定的value里面有攻谁,

下拉選框中就不會有空白的一項稚伍,選中別的數(shù)據(jù)項以后消失;

? ? 如果ng-model所綁定的變量的值不在ng-options綁定的value里面戚宦,

? ? 下拉選框中就不會有空白一項,并且只有當(dāng)ng-options綁定的value里有對應(yīng)

? ? 的text為空行時个曙,這個空行才會一直存在于下拉選項里。

解決辦法

方法一:將select中的一個option設(shè)置為空受楼,就可以防止因添加ng-model自動添加空option的問題

方法二:自己預(yù)先添加一個value為空的option困檩,再用ng-if="false"把它去掉

Q2:提問人:


A2:回答人:李浩

回答:

三.ng-options與ng-repeat自動生成option選項的區(qū)別:

ng-options生成的option選項選中后祠挫,綁定到ngModel的值可以是對象。ng-repeat綁定到ngModel的值只能是字符串悼沿。

select初始化時需要為ngModel指定值,否則會出現(xiàn)空白選項骚灸。

Q3:提問人:

ng-value和ng-bind有什么區(qū)別糟趾?

A3:回答人:李浩

回答:

1、ng-model : 是雙向數(shù)據(jù)綁定甚牲,改變頁面上ng-model模塊的值义郑,也會對$scope中對應(yīng)的值起作用;

? ? ? ng-bind : 是單向數(shù)據(jù)綁定,頁面上改變并不會對$scope中內(nèi)容起到作用;

? ? ? ng-value : 作用類似于 html中value的作用;

2丈钙、ng-model : 可以定義在 等標(biāo)簽內(nèi)非驮,顯示值

? ? ? ng-bind : 是覆蓋html元素的內(nèi)容,所以放在中不會顯示值雏赦,查看覆蓋后的代碼是xxxx劫笙,所以不會顯示值,

? ? ? 可以放在等標(biāo)簽中

3星岗、下邊的一段代碼可以看到ng-model與ng-value結(jié)合使用的效果填大,類比于原生radio使用方法,ng-model類似于name的作用俏橘,ng-value是賦值給ng-model

1允华、ng-model : 是雙向數(shù)據(jù)綁定,改變頁面上ng-model模塊的值寥掐,也會對$scope中對應(yīng)的值起作用;

? ? ? ng-bind : 是單向數(shù)據(jù)綁定靴寂,頁面上改變并不會對$scope中內(nèi)容起到作用;

? ? ? ng-value : 作用類似于 html中value的作用;

2、ng-model : 可以定義在 等標(biāo)簽內(nèi)召耘,顯示值

? ? ? ng-bind : 是覆蓋html元素的內(nèi)容百炬,所以放在中不會顯示值,查看覆蓋后的代碼是xxxx怎茫,所以不會顯示值收壕,

? ? ? 可以放在等標(biāo)簽中

3、下邊的一段代碼可以看到ng-model與ng-value結(jié)合使用的效果轨蛤,類比于原生radio使用方法蜜宪,ng-model類似于name的作用,ng-value是賦值給ng-model


感謝閱讀

github-PPT鏈接

https://ptteng.github.io/WEB/ppt/js-08%20ng-if%20ng-class%20ng-option%20ng-value.html#/

騰訊視頻鏈接

https://v.qq.com/x/page/s05363jigtg.html

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

人生苦短祥山,想學(xué)Python圃验。

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)缝呕,非商業(yè)轉(zhuǎn)載請注明出處澳窑。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末斧散,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子摊聋,更是在濱河造成了極大的恐慌鸡捐,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件麻裁,死亡現(xiàn)場離奇詭異箍镜,居然都是意外死亡,警方通過查閱死者的電腦和手機煎源,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門色迂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人手销,你說我怎么就攤上這事歇僧。” “怎么了锋拖?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵诈悍,是天一觀的道長。 經(jīng)常有香客問我姑隅,道長写隶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任讲仰,我火速辦了婚禮慕趴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鄙陡。我一直安慰自己冕房,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布趁矾。 她就那樣靜靜地躺著耙册,像睡著了一般。 火紅的嫁衣襯著肌膚如雪毫捣。 梳的紋絲不亂的頭發(fā)上详拙,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機與錄音蔓同,去河邊找鬼饶辙。 笑死,一個胖子當(dāng)著我的面吹牛斑粱,可吹牛的內(nèi)容都是我干的弃揽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼矿微!你這毒婦竟也來了痕慢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤涌矢,失蹤者是張志新(化名)和其女友劉穎掖举,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體娜庇,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡拇泛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了思灌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡恭取,死狀恐怖泰偿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蜈垮,我是刑警寧澤耗跛,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站攒发,受9級特大地震影響调塌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惠猿,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一羔砾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧偶妖,春花似錦姜凄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至扼鞋,卻和暖如春申鱼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背云头。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工捐友, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盘寡。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓楚殿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子脆粥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容