赞
踩
ng-class 指令用于给 HTML 元素动态绑定一个或多个 CSS 类。
ng-class
指令的值可以是字符串,对象,或一个数组。
如果是字符串,多个类名使用空格分隔。
如果是对象,需要使用 key-value 对,key 为你想要添加的类名,value 是一个布尔值。只有在 value 为 true 时类才会被添加。
如果是数组,可以由字符串或对象组合组成,数组的元素可以是字符串或对象。
在前面Angularjs开发一些经验总结中我们说到在angular开发中angular controller never 包含DOM元素(html/css),在controller需要一个简单的POJO(plain object javascript object),与view完全的隔离(交互angularjs框架的职责。但在某些项目中看见controller涉及DOM的元素最多的是在controller scope上定义某变量,其值为class name,形如:
- function ctr($scope){
- $scope.test =“classname”;
- }
-
- <div class=”{{test}}”></div>
我们继续其他两种解决方案:
1字符串数组形式是针对class简单变化,具有排斥性的变化,true是什么class,false是什么class,其形如;
- function Ctr($scope) {
- $scope.isActive = true;
- }
-
- <div ng-class="{true: 'active', false: 'inactive'}[isActive]">
- </div>
其结果是2中组合,isActive表达式为true,则是active,否则inactive。
2对象key/value处理主要针对复杂的class混合,其形如:
- function Ctr($scope) {
-
- }
-
- <div ng-class {'selected': isSelected, 'car': isCar}">
- </div>
当 isSelected = true 则增加selected class,
当isCar=true,则增加car class,
所以你结果可能是4种组合。
个人推荐用2,3两种方式,不建议将class放入controller scope之上,scope需要保持纯洁行,scope上的只能是数据和行为。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。