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压缩混淆工具
May 16 Javascript
JavaScript作用域与作用域链深入解析
Dec 06 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
Jan 28 Javascript
学习JavaScript设计模式(接口)
Nov 26 Javascript
整理Javascript基础入门学习笔记
Nov 29 Javascript
jQuery实现选项卡切换效果简单演示
Dec 09 Javascript
js操作DOM--添加、删除节点的简单实例
Jul 08 Javascript
全面解析Angular中$Apply()及$Digest()的区别
Aug 04 Javascript
js图片上传的封装代码
Aug 01 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
Jan 08 Javascript
React中this丢失的四种解决方法
Mar 12 Javascript
详解js获取video任意时间的画面截图
Apr 17 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
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
在WordPress中使用wp-cron插件来设置定时任务
2015/12/10 PHP
Laravel 5.3 学习笔记之 配置
2016/08/28 PHP
Yii框架函数简单用法分析
2019/09/09 PHP
javaScript - 如何引入js代码
2021/03/09 Javascript
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
js监控IE火狐浏览器关闭、刷新、回退、前进事件
2014/07/23 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
一波JavaScript日期判断脚本分享
2016/03/06 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
2016/09/01 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
2017/03/23 Javascript
JavaScript生成简单等差数列
2017/11/28 Javascript
vue init失败简单解决方法(终极版)
2017/12/22 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
2018/11/10 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
jQuery--遍历操作实例小结【后代、同胞及过滤】
2020/05/22 jQuery
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
Python实现在线程里运行scrapy的方法
2015/04/07 Python
Python数据结构与算法之字典树实现方法示例
2017/12/13 Python
对python中url参数编码与解码的实例详解
2019/07/25 Python
python中eval与int的区别浅析
2019/08/11 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
2020/12/04 Python
婴儿地球:Baby Earth
2018/12/25 全球购物
如何将字串String转换成整数int
2015/02/21 面试题
高三生物教学反思
2014/01/25 职场文书
手机银行营销方案
2014/03/14 职场文书
文艺晚会主持词
2014/03/24 职场文书
2014年人事科工作总结
2014/11/19 职场文书
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
2021/07/16 Java/Android
Elasticsearch 索引操作和增删改查
2022/04/19 Python