细说Angular ng-class

转载 2015年07月08日 12:46:22

在前面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>

这种方式完全没错,是angular提供的一种改变class的方式,但是在controller涉及了classname在我看来是乎总是那么诡异,我希望的是controller是一个干净的纯javascript意义的object。

在angular中为我们提供了3种方案处理class:
1:scope变量绑定,如上例。(不推荐使用)
2:字符串数组形式。
3:对象key/value处理。

我们继续其他两种解决方案:
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上的只能是数据和行为。

细说Angular ng-class

在前面Angularjs开发一些经验总结中我们说到在angular开发中angular controller never 包含DOM元素(html/css),在controller需要一个简单的POJ...
  • peade
  • peade
  • 2016年08月18日 15:48
  • 160

细说Angular ng-class

在前面Angularjs开发一些经验总结中我们说到在angular开发中angular controller never 包含DOM元素(html/css),在controller需要一个简单的POJ...

angular中的ng-class的几种常用方式

ng-calss的几种使用方法。 .red{ width: 100px; height: 100px; background: red;...

angular [ng-class和ng-model]配对使用,切换背景颜色

慢慢开始研究下js相关的一些框架,比如说angular.js.第一个学习的是ng-class实现切换背景颜色,代码如下: ng-class类选择 .lightblue{width...

Angular2权威教程(ng-book2) 源代码

  • 2017年12月06日 13:29
  • 6.7MB
  • 下载

Angular解决IE和Firefox下button内部元素ng-click事件被屏蔽

如果我们在button元素内部有其它的子元素并且绑定点击事件,比如:而我们的代码是这样的: angular.module("app", []) .co...

Angular权威教程(ng-book2)范例代码

  • 2017年07月09日 18:11
  • 15.43MB
  • 下载

Angular 4入门教程系列:17:NG-ZORRO:Layout

这篇文章介绍一下如何使用NG-ZORRO的layout相关的组件。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:细说Angular ng-class
举报原因:
原因补充:

(最多只允许输入30个字)