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 相关文章推荐
Pro JavaScript Techniques学习笔记
Dec 28 Javascript
JavaScript在多浏览器下for循环的使用方法
Nov 07 Javascript
JS 实现导航栏悬停效果
Sep 23 Javascript
JavaScript中原型和原型链详解
Feb 11 Javascript
微信小程序实现锚点定位楼层跳跃的实例
May 18 Javascript
JavaScript中常见的八个陷阱总结
Jun 28 Javascript
微信小程序实现表单校验功能
Mar 30 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
Sep 19 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
May 29 Javascript
原生js代码能实现call和bind吗
Jul 31 Javascript
JS window对象简单操作完整示例
Jan 14 Javascript
vue3.0 的 Composition API 的使用示例
Oct 26 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中通过ADODB库实现调用Access数据库之修正版本
2006/12/31 PHP
PHP 最大运行时间 max_execution_time修改方法
2010/03/08 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
2015/08/18 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
textarea不能通过maxlength属性来限制字数的解决方法
2014/09/01 Javascript
jQuery+CSS实现一个侧滑导航菜单代码
2016/05/09 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
2016/08/05 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
jQuery Ajax实现跨域请求
2017/01/21 Javascript
使用canvas进行图像编辑的实例
2017/08/29 Javascript
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
用Python的Django框架编写从Google Adsense中获得报表的应用
2015/04/17 Python
详细解读Python中解析XML数据的方法
2015/10/15 Python
python3基于TCP实现CS架构文件传输
2018/07/28 Python
使用pip安装python库的多种方式
2019/07/31 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
Tensorflow实现将标签变为one-hot形式
2020/05/22 Python
Python实现寻找回文数字过程解析
2020/06/09 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
树莓派4B安装Tensorflow的方法步骤
2020/07/16 Python
python简单实现插入排序实例代码
2020/12/16 Python
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
花店创业计划书范文
2014/02/07 职场文书
物理研修随笔感言
2014/02/14 职场文书
初一新生军训方案
2014/05/22 职场文书
委托书的写法
2014/08/30 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
护士个人年度总结范文
2015/02/13 职场文书
银行岗位培训心得体会
2016/01/09 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
pytorch 实现多个Dataloader同时训练
2021/05/29 Python