Angular用來(lái)控制元素的展示與否的原生指令介紹
在Angular的原生指令中有這幾個(gè)指令用來(lái)控制元素的展示與否,ng-show/ng-hide/ng-if和ng-switch。
在angular性能優(yōu)化中,我們也常常會(huì)用到它。
我們看下他們的區(qū)別。
其中ng-show和ng-hide是一樣的,只不過(guò)ng-show是滿足條件就展示,ng-hide是滿足條件就隱藏,下面就不再提到ng-hide。

ng-show
ng-show接收的一個(gè)bool值,當(dāng)為true的時(shí)候就會(huì)被觸發(fā)去展示DOM節(jié)點(diǎn)。當(dāng)ng-show的值為false的時(shí)候,在DOM節(jié)點(diǎn)上添加了一個(gè)ng-hide的一個(gè)類(lèi),這個(gè)類(lèi)的表達(dá)式就是“display:none”。DOM load的時(shí)候ng-show里面的所有節(jié)點(diǎn)都會(huì)被加載。也就是說(shuō),ng-show僅僅是影藏和顯示了DOM節(jié)點(diǎn)。也就意味如果油太多的ng-show指令,即使他們不顯示,但他們所在的DOM節(jié)點(diǎn)還是會(huì)被渲染的。
ng-if
ng-if也接收的一個(gè)bool值,當(dāng)它的值為false的時(shí)候,它所控制的節(jié)點(diǎn)并沒(méi)有被創(chuàng)建或者說(shuō)之前的DOM節(jié)點(diǎn)會(huì)被銷(xiāo)毀掉,哪怕這個(gè)節(jié)點(diǎn)里面包含了很多ng的綁定都不會(huì)去執(zhí)行。所以,我們?cè)陧?xiàng)目開(kāi)發(fā)中,如果沒(méi)有必要一次性加載完的dom就可以用ng-if來(lái)阻止ng事件發(fā)生,從而也就加快了dom的加載速度。特別是在repeat的時(shí)候,每條數(shù)據(jù)又包含了復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的時(shí)候效果特別明顯。當(dāng)它的值為true的時(shí)候,就會(huì)去創(chuàng)建DOM節(jié)點(diǎn)。
所以如果你用指令、模板來(lái)渲染額外的信息,例如通過(guò)點(diǎn)擊來(lái)顯示列表項(xiàng)的詳細(xì)信息,一定要使用 ng-if(AngularJSv. 1.1.5以后)。它可阻止渲染(與ng-show相比)。
ng-switch
ng-switch的存在,讓我們省去很多麻煩(應(yīng)該說(shuō)angular本身就這樣)。比如我們之前用傳統(tǒng)的方式去做一個(gè)tab選項(xiàng)卡。我們要一次次的循環(huán)然后在判斷當(dāng)前的狀態(tài)最后再去執(zhí)行相應(yīng)的事情。在angular里面用ng-switch就非常的簡(jiǎn)單。ng-switch要先監(jiān)聽(tīng)某一個(gè)變量,當(dāng)此變量為什么值的時(shí)候下面就顯示什么內(nèi)容。如上面顯示的,監(jiān)聽(tīng)了type這么一個(gè)變量,當(dāng)type的值等于‘a(chǎn)aa'的時(shí)候這塊區(qū)域就會(huì)被創(chuàng)建并顯示;當(dāng)type的值等于‘bbb'的時(shí)候,之前'aaa'的dom全部會(huì)被銷(xiāo)毀,然后'bbb'dom全部創(chuàng)建并顯示。
例子 http://jsbin.com/hinehi/1/edit
- 整理AngularJS中的一些常用指令
- angularjs指令中的compile與link函數(shù)詳解
- 學(xué)習(xí)AngularJs:Directive指令用法(完整版)
- AngularJS中的指令全面解析(必看)
- AngularJS學(xué)習(xí)筆記之ng-options指令
- Angularjs編寫(xiě)KindEditor,UEidtor,jQuery指令
- 用AngularJS的指令實(shí)現(xiàn)tabs切換效果
- 自定義Angular指令與jQuery實(shí)現(xiàn)的Bootstrap風(fēng)格數(shù)據(jù)雙向綁定的單選與多選下拉框
- AngularJS基礎(chǔ) ng-include 指令示例講解
- AngularJS ng-change 指令的詳解及簡(jiǎn)單實(shí)例
- 詳解AngularJS中自定義指令的使用
- AngularJS入門(mén)(用ng-repeat指令實(shí)現(xiàn)循環(huán)輸出
- Angular 常用指令實(shí)例總結(jié)整理
相關(guān)文章
Angular.JS中的指令引用template與指令當(dāng)做屬性詳解
這篇文章主要介紹了Angular.JS中的指令引用template與指令當(dāng)做屬性的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-03-03
使用angular寫(xiě)一個(gè)hello world
這篇文章主要介紹了使用angular寫(xiě)一個(gè)hello world的方法及示例,需要的朋友可以參考下2015-01-01
解決angular的post請(qǐng)求后SpringMVC后臺(tái)接收不到參數(shù)值問(wèn)題的方法
這篇文章主要介紹了解決angular的post請(qǐng)求后SpringMVC后臺(tái)接收不到參數(shù)值問(wèn)題的方法,感興趣的小伙伴們可以參考一下2015-12-12
詳解Angular 4.x NgTemplateOutlet
這篇文章主要介紹了詳解Angular 4.x NgTemplateOutlet,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
AngularJS基礎(chǔ) ng-hide 指令用法及示例代碼
本文主要介紹AngularJS ng-hide 指令,這里整理了ng-hide指令的基礎(chǔ)資料,并附實(shí)例代碼,有興趣的小伙伴參考下2016-08-08
@angular前端項(xiàng)目代碼優(yōu)化之構(gòu)建Api Tree的方法
這篇文章主要介紹了@angular前端項(xiàng)目代碼優(yōu)化之構(gòu)建Api Tree的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12

