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 相关文章推荐
基于jquery的复制网页内容到WORD的实现代码
Feb 16 Javascript
你必须知道的JavaScript 变量命名规则详解
May 07 Javascript
JS日期和时间选择控件升级版(自写)
Aug 02 Javascript
jquery实现动态操作select选中
Feb 11 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
Aug 24 Javascript
jquery实现简单的二级导航下拉菜单效果
Sep 07 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
Dec 02 Javascript
Bootstrap Navbar Component实现响应式导航
Oct 08 Javascript
flexslider.js实现移动端轮播
Feb 05 Javascript
JS解决position:sticky的兼容性问题的方法
Oct 17 Javascript
vue中nextTick用法实例
Sep 11 Javascript
微信小程序绘制半圆(弧形)进度条
Nov 18 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封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
在Javascript中定义对象类别
2006/12/22 Javascript
javascript之锁定表格栏位
2007/06/29 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
freemarker判断对象是否为空的方法
2015/08/13 Javascript
基于jquery实现轮播焦点图插件
2016/03/31 Javascript
如何检测JavaScript的各种类型
2016/07/30 Javascript
微信小程序 地图map详解及简单实例
2017/01/10 Javascript
js仿淘宝评价评分功能
2017/02/28 Javascript
微信JS SDK接入的几点注意事项(必看篇)
2017/06/23 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
简述Angular 5 快速入门
2017/11/04 Javascript
原生JS实现$.param() 函数的方法
2018/08/10 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
Node 搭建一个静态资源服务器的实现
2019/05/20 Javascript
echarts饼图各个板块之间的空隙如何实现
2020/12/01 Javascript
Python进行数据科学工作的简单入门教程
2015/04/01 Python
Python编程产生非均匀随机数的几种方法代码分享
2017/12/13 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
python安装pywin32clipboard的操作方法
2019/01/24 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
python使用mitmproxy抓取浏览器请求的方法
2019/07/02 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
const和static readonly区别
2013/05/20 面试题
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
旅游活动总结
2014/08/27 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
文明单位创建材料
2014/12/24 职场文书
公司欠款证明
2015/06/24 职场文书
Go使用协程交替打印字符
2021/04/29 Golang
Python中zipfile压缩包模块的使用
2021/05/14 Python
Python语法学习之进程的创建与常用方法详解
2022/04/08 Python
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript