AngularJS ng-class用法

ng-class是AngularJS预设的一个指令,用于动态自定义dom元素的class属性(即类名)

ng-class在实际的应用场景中还是比较灵活的,而在AngularJS中一般有三种方式给元素的class属性做一些门道,如下:

scope变量绑定(不推荐使用):

<!doctype html>
<html ng-app="ngClass">
<head>
<meta charset="utf-8">
<title>ng-class</title>
<style>
.className{background-color:red;}
</style>
</head>

<body>
<div ng-controller="ngClassCnt">
    <div class=‘{{text}}‘>Text</div>
</div>
<script src="js/angular-1.3.15/angular.js"></script>
<script>
var ngClass=angular.module("ngClass",[]);
ngClass.controller(‘ngClassCnt‘,function($scope){
    $scope.text=‘className‘;
});
</script>
</body>
</html>

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

对象key/value处理

<!doctype html>
<html ng-app="ngClass">
<head>
<meta charset="utf-8">
<title>ng-class</title>
<style>
.error{background-color:red;}
.warning{background-color:yellow;}
</style>
</head>

<body>
<div ng-controller="ngClassCnt">
    <div ng-class=‘{error:isError,warning:isWarning}‘>{{messageText}}</div>
    <button ng-click=‘showError()‘>Error</button>
    <button ng-click=‘showWarning()‘>Warning</button>
</div>
<script src="js/angular-1.3.15/angular.js"></script>
<script>
var ngClass=angular.module("ngClass",[]);
ngClass.controller(‘ngClassCnt‘,function($scope){
    $scope.isError=false;
    $scope.isWarning=false;
    $scope.showError=function(){
        $scope.messageText=‘This is an error‘;
        $scope.isError=true;
        $scope.isWarning=false;
    };
    $scope.showWarning=function(){
        $scope.messageText=‘Just a warning,Please carry on‘;
        $scope.isWarning=true;
        $scope.isError=false;
    };
});
</script>
</body>
</html>

备注(copy上面代码执行下更清楚):

1、当点击Error按钮执行showError()方法时,isError为true,isWarning为false,此时带有ng-class的那个div的class属性的值会增加一个类名error

2、当点击Warning时执行showWarning()方法,isError为false,isWarning为true,此时带有ng-class的那个div的class属性的值会增加一个类名warning

3、若前面1、2两点执行的方法,得到的isError、isWarning均为true,此时带有ng-class的那个div的class属性的值会增加两个类名error 、warning

依此类推。。。

字符串数组形式

<!doctype html>
<html ng-app="ngClass">
<head>
<meta charset="utf-8">
<title>ng-class</title>
<style>
.active{background-color:red;}
</style>
</head>

<body>
<div ng-controller="ngClassCnt">
    <div ng-class="{true: ‘active‘, false: ‘inactive‘}[isActive]">11</div>
</div>
<script src="js/angular-1.3.15/angular.js"></script>
<script>
var ngClass=angular.module("ngClass",[]);
ngClass.controller(‘ngClassCnt‘,function($scope){
    $scope.isActive = true;
});
</script>
</body>
</html>

备注:其结果是2种组合,isActive表达式为true,则带有ng-class的那个div的类名为active,否则为inactive。

时间: 2024-12-15 06:24:54

AngularJS ng-class用法的相关文章

学习AngularJs:Directive指令用法(完整版)

这篇文章主要学习AngularJs:Directive指令用法,内容很全面,感兴趣的小伙伴们可以参考一下 本教程使用AngularJs版本:1.5.3 AngularJs GitHub: https://github.com/angular/angular.js/ AngularJs下载地址:https://angularjs.org/ 摘要:Directive(指令)笔者认为是AngularJ非常强大而有有用的功能之一.它就相当于为我们写了公共的自定义DOM元素或LASS属性或ATTR属性,并

跟我学AngularJs:Directive指令用法解读(下)

此文接 跟我学AngularJs:Directive指令用法解读(上) 8.transclude 如果不想让指令内部的内容被模板替换,可以设置这个值为true.一般情况下需要和ngTransclude指令一起使用. 比如:template:"<div>hello every <div ng-transclude></div></div>",这时,指令内部的内容会嵌入到ng-transclude这个div中.也就是变成了<div>

angularJS -- RXJS 的用法

JS -- 获取异步数据的方式: 1. 回调函数 2. Promise 3. 事件订阅 4. RxJS -- V6.0 + 1. 回调函数方式获取异步数据 延时器模拟异步数据: getCallData(cb) { setTimeout(() => { var userName = "ABC" cb && cb(userName) }, 1000); } 调用: /* 回调函数获取异步数据 */ this.request.getCallData((data: any

AngularJS的Filter用法详解

Filter简介 Filter是用来格式化数据用的. Filter的基本原型( '|' 类似于Linux中的管道模式): {{ expression | filter }} Filter可以被链式使用(即连续使用多个filter): {{ expression | filter1 | filter2 | ... }} Filter也可以指定多个参数: {{ expression | filter:argument1:argument2:... }} AngularJS内建的Filter Angu

转:AngularJS的Filter用法详解

Filter简介 Filter是用来格式化数据用的. Filter的基本原型( '|' 类似于Linux中的管道模式): {{ expression | filter }} Filter可以被链式使用(即连续使用多个filter): {{ expression | filter1 | filter2 | ... }} Filter也可以指定多个参数: {{ expression | filter:argument1:argument2:... }} AngularJS内建的Filter Angu

angularjs之Restangular用法

参考资料: 学习-[前端]-angularjs基本框架以及向服务器发送请求的方法 Restangular on Angular

跟我学AngularJs:Directive指令用法解读(上)

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本教程使用AngularJs版本:1.5.3 AngularJs GitHub: https://github.com/angular/angular.js/ AngularJs下载地址:https://angularjs.org/ 摘要: Directive(指令)笔者认为是AngularJ非常强大而有有用的功能之一.它就相当于为我们写了公共的自定义DOM元素或CLASS属性或ATTR属性

前端菜鸟学习AngularJS(标签用法)

ng-model ng-class ng-if 双向绑定 ionic.bunle.min.js getJSON $Socpe.draw()

Part 15 AngularJS ng init directive

The ng-init directive allows you to evaluate an expression in the current scope. In the following example, the ng-init directive initializes employees variable which is then used in the ng-repeat directive to loop thru each employee. In a real world

Part 6 AngularJS ng repeat directive

ng-repeat is similar to foreach loop in C#. Let us understand this with an example. Here is what we want to do. 1. For each employee we have in the employees array we want a table row. With in each cell of the table row we to display employee Firstna