AngularJS中關(guān)于ng-class指令的幾種實(shí)現(xiàn)方式詳解
前言
開發(fā)中經(jīng)常會遇到這樣的需求,一個元素需要在不同的狀態(tài)下呈現(xiàn)不同的樣子,而在這所謂的的樣子當(dāng)然就是改變其css
的屬性,而實(shí)現(xiàn)動態(tài)的改變屬性值,我們就需要實(shí)現(xiàn)動態(tài)的更換其class
屬性值。
在這給大家介紹三種方法來實(shí)現(xiàn),大家可以根據(jù)自己的需求來選擇方式,下面來看看。
第一種:通過數(shù)據(jù)的雙向綁定(不推薦)
<div ng-controller="firstController"> <div ng-class="{{className}}"></div> </div> <script> var app=angular.module("myModule",[]) app.controller('firstController',function($scope){ $scope.className='change'; }) </script>
網(wǎng)上各種不推薦,說實(shí)話,既然angularJS雙向數(shù)據(jù)綁定這么吊,為什么不能通過這個來改變呢!查了下原由:“在controller
涉及了classname
在我看來是乎總是那么詭異,我希望的是controller
是一個干凈的純javascript意義的object
”,當(dāng)然并沒有明文固定不能夠這么使用的,而且反而我覺得這樣非常的方便,讓html中元素想怎么變就怎么變!同理中的img
元素中的src
就不可以通過別的來改變,但是通過這種方式就是可以的!當(dāng)然,這種方式也的確給人的感覺怪怪的,個人認(rèn)為:可以不得已而為之~
第二種:通過對象數(shù)組
<div ng-controller="firstController"> <div ng-class="{true:'change1',false:'change2'}[className]"></div> </div> <script> var app=angular.module("myModule",[]) app.controller('firstController',function($scope){ $scope.className=true; }) </script>
實(shí)現(xiàn)很簡單,就是當(dāng)className
為true
的時候class
為change1
,相反則為change2
。
但是有一點(diǎn)不好的只能夠讓一個元素?fù)碛袃煞N狀態(tài),雖然這么說!基本也是滿足所需了,我一般都用這個。簡單、直觀!
第三種:通過key/value
<div ng-controller="firstController"> <div ng-class="{'change1':select,'change2':choice,'change3':lala}"> </div> <script> var app=angular.module("myModule",[]) app.controller('firstController',function($scope){ $scope.select=true; $scope.lala=true; }) </script>
當(dāng)lala
為true
的時候,class
則為change3
,個人認(rèn)為這個是比較推薦的,可以彌補(bǔ)第二種方式的點(diǎn)點(diǎn)遺憾~
總結(jié)
我們?nèi)绻陧?xiàng)目中可以靈活的運(yùn)用這些指令會給我們帶來非常多的便利,我們在解決問題的時候能有更多的思路,這樣我們可以組合的使用這些指令來快速的解決一些比較苦惱的問題!以上就是這篇文章的全部內(nèi)容,希望能對大家想學(xué)習(xí)或者工作帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
AngularJs基于角色的前端訪問控制的實(shí)現(xiàn)
本篇文章主要介紹了AngularJs實(shí)現(xiàn)基于角色的前端訪問控制,可以適用于不同的角色,有需要的可以了解一下。2016-11-11Angular中$cacheFactory的作用和用法實(shí)例詳解
$cacheFactory是一個為Angular服務(wù)生產(chǎn)緩存對象的服務(wù)。接下來通過本文給大家介紹Angular中$cacheFactory的作用和用法實(shí)例詳解,非常不錯,感興趣的朋友一起看下吧2016-08-08Angular2 PrimeNG分頁模塊學(xué)習(xí)
這篇文章主要為大家詳細(xì)介紹了Angular2 PrimeNG分頁模塊學(xué)習(xí)教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01AngularJS與后端php的數(shù)據(jù)交互方法
今天小編就為大家分享一篇AngularJS與后端php的數(shù)據(jù)交互方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08詳解AngularJS跨頁面?zhèn)髦担╱i-router)
本篇文章主要介紹了詳解AngularJS跨頁面?zhèn)髦担╱i-router),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08