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 相关文章推荐
关于使用runtimeStyle属性问题讨论文章
Mar 08 Javascript
脚本之家贴图转换+转贴工具用到的js代码超级推荐
Apr 05 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
Jan 15 Javascript
你需要知道的10个最佳javascript开发实践小结
Apr 15 Javascript
取消选中单选框radio的三种方式示例介绍
Dec 23 Javascript
js实现点击链接后延迟3秒再跳转的方法
Jun 05 Javascript
Jquery中巧用Ajax的beforeSend方法
Jan 20 Javascript
深入理解MVC中的时间js格式化
May 19 Javascript
任意Json转成无序列表的方法示例
Dec 09 Javascript
关于layui flow loading占位图的实现方法
Sep 21 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
May 19 jQuery
vant-ui AddressEdit地址编辑和van-area的用法说明
Nov 03 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
PHP4实际应用经验篇(7)
2006/10/09 PHP
基于mysql的论坛(4)
2006/10/09 PHP
php实现自动获取生成文章主题关键词功能的深入分析
2013/06/03 PHP
PHP中使用smarty生成静态文件的例子
2014/04/24 PHP
教你在header中隐藏php的版本信息
2016/08/10 PHP
关于PHP转换超过2038年日期出错的问题解决
2017/06/28 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
2019/02/27 PHP
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
javascript-表格排序(降序/反序)实现介绍(附图)
2013/05/30 Javascript
导航跟随滚动条置顶移动示例代码
2013/09/11 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
2014/09/03 Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
2015/08/06 Javascript
微信小程序 switch组件详解及简单实例
2017/01/10 Javascript
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
Python与Redis的连接教程
2015/04/22 Python
Python函数返回值实例分析
2015/06/08 Python
python基础练习之几个简单的游戏
2017/11/10 Python
利用python将图片转换成excel文档格式
2017/12/30 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
2019/04/04 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
日本亚马逊官方网站:Amazon.co.jp
2020/04/14 全球购物
环境科学专业个人求职信
2013/09/26 职场文书
教育专业个人求职信
2013/12/02 职场文书
森林防火工作方案
2014/02/14 职场文书
综合内勤岗位职责
2014/04/14 职场文书
老干部工作汇报材料
2014/10/28 职场文书
大学生村官个人总结
2015/02/15 职场文书
浅谈Python从全局与局部变量到装饰器的相关知识
2021/06/21 Python
Ajax实现三级联动效果
2021/10/05 Javascript
php修改word的实例方法
2021/11/17 PHP
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫