详解angularJs中关于ng-class的三种使用方式说明


Posted in Javascript onJune 02, 2017

在开发中我们通常会遇到一种需求:一个元素在不同的状态需要展现不同的样子。

而在这所谓的样子当然就是改变其css的属性,而实现能动态的改变其属性值,必然只能是更换其class属性

这里有三种方法:

第一种:通过数据的双向绑定(不推荐)

第二种:通过对象数组

第三种:通过key/value( 推荐 )

下面简单说下这三种:

第一种:通过数据的双向绑定

实现方式:

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,个人认为这个是比较推荐的,可以弥补第二种方式的点点遗憾~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 中关于CSS操作部分使用说明
Jun 10 Javascript
imgAreaSelect 中文文档帮助说明
Oct 08 Javascript
jQuery插件slides实现无缝轮播图特效
Apr 17 Javascript
深入讲解AngularJS中的自定义指令的使用
Jun 18 Javascript
瀑布流的实现方式(原生js+jquery+css3)
Jun 28 Javascript
AngularJS基础 ng-dblclick 指令用法
Aug 01 Javascript
简单谈谈Vue 模板各类数据绑定
Sep 25 Javascript
vue.js表格分页示例
Oct 18 Javascript
微信小程序开发探究
Dec 27 Javascript
微信小程序 图片宽高自适应详解
May 11 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
May 02 Javascript
layUI的验证码功能及校验实例
Oct 25 Javascript
vue.js删除动态绑定的radio的指定项
Jun 02 #Javascript
vue.js选中动态绑定的radio的指定项
Jun 02 #Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
Jun 02 #jQuery
Vue.js中数据绑定的语法教程
Jun 02 #Javascript
SpringMVC+bootstrap table实例详解
Jun 02 #Javascript
BootStrap daterangepicker 双日历控件
Jun 02 #Javascript
ES6中箭头函数的定义与调用方式详解
Jun 02 #Javascript
You might like
php网页后退不再出现过期
2007/03/08 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
2013/04/10 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
[IE&amp;FireFox兼容]JS对select操作
2007/01/07 Javascript
JavaScript经典效果集锦
2010/07/06 Javascript
自制基于jQuery的智能提示插件一枚
2011/02/18 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
详解webpack 入门与解析
2018/04/09 Javascript
JS实现获取进今年第几天是周几的方法分析
2018/06/27 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
[54:43]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第一场 2月22日
2021/03/11 DOTA
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
详解Python自建logging模块
2018/01/29 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
python字符串格式化方式解析
2019/10/19 Python
python如何使用socketserver模块实现并发聊天
2019/12/14 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
应用数学专业求职信
2014/03/14 职场文书
质量标语大全
2014/06/12 职场文书
年终工作总结范文2014
2014/11/27 职场文书
毕业生就业推荐表自我评价
2015/03/02 职场文书
民事二审代理词
2015/05/25 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
倡议书怎么写?
2019/04/11 职场文书
MySQL事务的隔离级别详情
2022/07/15 MySQL
Python如何加载模型并查看网络
2022/07/15 Python