前言
開發中經常會遇到這樣的需求,一個元素需要在不同的狀態下呈現不同的樣子,而在這所謂的的樣子當然就是改變其css
的屬性,而實現動態改變屬性值,我們就需要實現動態更換其class
屬性值。
在這給大家介紹三種方法來實現,大家可以根據自己的需求來選擇方式,下面來看看。
第一種:通過資料的雙向繫結(不推薦)
<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>
網上各種不推薦,說實話,既然angularJS雙向資料繫結這麼吊,為什麼不能通過這個來改變呢!查了下原由:“在controller
涉及了classname
在我看來是乎總是那麼詭異,我希望的是controller
是一個乾淨的純javascript意義的object
”,當然並沒有明文固定不能夠這麼使用的,而且反而我覺得這樣非常的方便,讓html中元素想怎麼變就怎麼變!同理中的img
元素中的src
就不可以通過別的來改變,但是通過這種方式就是可以的!當然,這種方式也的確給人的感覺怪怪的,個人認為:可以不得已而為之~
第二種:通過對象數組
<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>
實現很簡單,就是當className
為true
的時候class
為change1
,相反則為change2
。
但是有一點不好的只能夠讓一個元素擁有兩種狀態,雖然這麼說!基本也是滿足所需了,我一般都用這個。簡單、直觀!
第三種:通過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>
當lala
為true
的時候,class
則為change3
,個人認為這個是比較推薦的,可以彌補第二種方式的點點遺憾~
總結
我們如果在項目中可以靈活的運用這些指令會給我們帶來非常多的便利,我們在解決問題的時候能有更多的思路,這樣我們可以組合的使用這些指令來快速的解決一些比較苦惱的問題!以上就是這篇文章的全部內容,希望能對大家想學習或者工作帶來一定的協助,如果有疑問大家可以留言交流。