AngularJS中关于ng-class指令的几种实现方式详解


Posted in Javascript onSeptember 17, 2016

前言

开发中经常会遇到这样的需求,一个元素需要在不同的状态下呈现不同的样子,而在这所谓的的样子当然就是改变其css的属性,而实现动态的改变属性值,我们就需要实现动态的更换其class属性值。

在这给大家介绍三种方法来实现,大家可以根据自己的需求来选择方式,下面来看看。

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

<div ng-controller="firstController">
  <div ng-class="{{className}}"></div>

</div>
<script>
  var app=angular.module("myModule",[])
   app.controller('firstController',function($scope){
     $scope.className='change';

   })
</script>

网上各种不推荐,说实话,既然angularJS双向数据绑定这么吊,为什么不能通过这个来改变呢!查了下原由:“在controller涉及了classname在我看来是乎总是那么诡异,我希望的是controller是一个干净的纯javascript意义的object”,当然并没有明文固定不能够这么使用的,而且反而我觉得这样非常的方便,让html中元素想怎么变就怎么变!同理中的img元素中的src就不可以通过别的来改变,但是通过这种方式就是可以的!当然,这种方式也的确给人的感觉怪怪的,个人认为:可以不得已而为之~

第二种:通过对象数组

<div ng-controller="firstController">

 <div ng-class="{true:'change1',false:'change2'}[className]"></div>


</div>
<script>
  var app=angular.module("myModule",[])
   app.controller('firstController',function($scope){
     $scope.className=true;

   })
</script>

实现很简单,就是当classNametrue的时候classchange1,相反则为change2

但是有一点不好的只能够让一个元素拥有两种状态,虽然这么说!基本也是满足所需了,我一般都用这个。简单、直观!

第三种:通过key/value

<div ng-controller="firstController">

  <div ng-class="{'change1':select,'change2':choice,'change3':lala}">

</div>
<script>
  var app=angular.module("myModule",[])
   app.controller('firstController',function($scope){
     $scope.select=true;
     $scope.lala=true;

   })
</script>

lalatrue的时候,class则为change3,个人认为这个是比较推荐的,可以弥补第二种方式的点点遗憾~

总结

我们如果在项目中可以灵活的运用这些指令会给我们带来非常多的便利,我们在解决问题的时候能有更多的思路,这样我们可以组合的使用这些指令来快速的解决一些比较苦恼的问题!以上就是这篇文章的全部内容,希望能对大家想学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
JavaScript中的new的使用方法与注意事项
May 16 Javascript
jquery里的正则表达式说明
Aug 03 Javascript
javascript jscroll模拟html元素滚动条
Dec 18 Javascript
图片上传插件jquery.uploadify详解
Nov 15 Javascript
javascript+ajax实现产品页面加载信息
Jul 09 Javascript
基于jQuery倒计时插件实现团购秒杀效果
May 13 Javascript
用iframe实现不刷新整个页面上传图片的实例
Nov 18 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
Dec 07 Javascript
基于ajax与msmq技术的消息推送功能实现代码
Dec 26 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
Aug 04 Javascript
vue实现登陆登出的实现示例
Sep 15 Javascript
详解Vue文档中几个易忽视部分的剖析
Mar 24 Javascript
AngularJS中过滤器的使用与自定义实例代码
Sep 17 #Javascript
利用js编写响应式侧边栏
Sep 17 #Javascript
各式各样的导航条效果css3结合jquery代码实现
Sep 17 #Javascript
JavaScript编写一个简易购物车功能
Sep 17 #Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
Sep 17 #Javascript
Bootstrap响应式侧边栏改进版
Sep 17 #Javascript
H5用户注册表单页 注册模态框!
Sep 17 #Javascript
You might like
关于PHP堆栈与列队的学习
2013/06/21 PHP
[原创]PHP实现SQL语句格式化功能的方法
2017/07/28 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
基于jQuery的倒计时实现代码
2012/05/30 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
2014/02/04 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
Jquery easyui开启行编辑模式增删改操作
2016/01/14 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
基于vue开发的在线付费课程应用过程
2018/01/25 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
vue中多个倒计时实现代码实例
2019/03/27 Javascript
js实现无限瀑布流实例方法
2019/09/16 Javascript
layui监听单元格编辑前后交互的例子
2019/09/16 Javascript
[01:24:51]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第二场
2014/05/26 DOTA
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
python删除列表中重复记录的方法
2015/04/28 Python
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
Python 模板引擎的注入问题分析
2017/01/01 Python
Python实现图片拼接的代码
2018/07/02 Python
python 快速把超大txt文件转存为csv的实例
2018/10/26 Python
局域网内python socket实现windows与linux间的消息传送
2019/04/19 Python
pandas取出重复数据的方法
2019/07/04 Python
python使用SQLAlchemy操作MySQL
2020/01/02 Python
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
外语系毕业生自荐信范文
2013/12/16 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
学生逃课检讨书
2015/02/17 职场文书
立案决定书范文
2015/06/24 职场文书
安全生产奖惩制度
2015/08/06 职场文书
导游词之峨眉山
2019/12/16 职场文书
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL