在开发中咱们一般会遇到一种需求:一个元素在不一样的状态须要展示不一样的样子。javascript
而在这所谓的样子固然就是改变其css的属性,而实现能动态的改变其属性值,必然只能是更换其class属性css
这里有三种方法:html
第一种:经过数据的双向绑定(不推荐)java
第二种:经过对象数组数组
第三种:经过key/valuespa
下面简单说下这三种:双向绑定
第一种:经过数据的双向绑定code
实现方式:htm
function changeClass(){ $scope.className = "change2"; } <div class="{{className}}"></div>
网上各类不推荐,说实话,既然angularJS双向数据绑定这么吊,为何不能经过这个来改变呢!查了下起因:“在controller涉及了classname在我看来是乎老是那么诡异,我但愿的是controller是一个干净的纯javascript意义的object”,固然并无明文固定不可以这么使用的,并且反而我以为这样很是的方便,让html中元素想怎么变就怎么变!同理中的img元素中的src就不能够经过别的来改变,可是经过这种方式就是能够的!对象
固然,这种方式也的确给人的感受怪怪的,我的认为:能够不得已而为之~
第二种:经过字符串数组的形式来改变
实现方式:
function changeClass(){ $scope.className = true/false; } <div ng-class="{true:'zhende',false:'jiade'}[className]"></div>
实现很简单,就是当className为真的时候class为zhende,相反则为jiade。
可是有一点很差的只可以让一个元素拥有两种状态,虽然这么说!基本也是知足所需了,我通常都用这个。简单、直观!
第三种:经过key/value的方式
实现方式:
function changeClass(){ $scope.lala = true; } <div ng-class="{'selectClass':select,'choiceClass':choice,'haha':lala}"></div>
当lala为true的时候,class则为haha,我的认为这个是比较推荐的,能够弥补第二种方式的点点遗憾~
因此基本上,angularJS中ng-class的实现就这三种方式~