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 相关文章推荐
Js 本页面传值实现代码
May 17 Javascript
JSON.parse 解析字符串出错的解决方法
Jul 08 Javascript
解决jquery插件冲突的问题
Jan 23 Javascript
JavaScript中的alert()函数使用技巧详解
Dec 29 Javascript
JavaScript数据类型之基本类型和引用类型的值
Apr 01 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
Nov 25 Javascript
基于jQuery实现表格的排序
Dec 02 Javascript
webpack本地开发环境无法用IP访问的解决方法
Mar 20 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
Oct 29 Javascript
JavaScript两种计时器的实例讲解
Jan 31 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
Sep 10 Javascript
JavaScript使用setTimeout实现倒计时效果
Feb 19 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 db类库进行数据库操作
2009/03/19 PHP
PHP 编写大型网站问题集
2010/05/07 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
2014/08/19 PHP
php示例详解Constructor Prototype Pattern 原型模式
2015/10/15 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
番茄的表单验证类代码修改版
2008/07/18 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
js变量以及其作用域详解
2020/07/18 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
2015/04/17 Javascript
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
vue组件父子间通信详解(三)
2017/11/07 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
2018/09/26 Javascript
详解Vue Cli浏览器兼容性实践
2020/06/08 Javascript
[01:17]辉夜杯战队访谈宣传片—EHOME
2015/12/25 DOTA
python实现文件名批量替换和内容替换
2014/03/20 Python
Python编写检测数据库SA用户的方法
2014/07/11 Python
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
Python守护线程用法实例
2017/06/23 Python
详解Django中间件的5种自定义方法
2018/07/26 Python
TensorFlow2.0矩阵与向量的加减乘实例
2020/02/07 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
英国时尚配饰、珠宝和服装网站:KJ Beckett
2020/01/23 全球购物
创建索引时需要注意的事项
2013/05/13 面试题
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
AJAX都有哪些有点和缺点
2012/11/03 面试题
资源环境与城市管理专业推荐信
2013/11/30 职场文书
办公室秘书岗位职责范本
2014/02/11 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
小学教师年度个人总结
2015/02/05 职场文书
离婚上诉状范文
2015/05/23 职场文书