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 相关文章推荐
新老版本juqery获取radio对象的方法
Mar 01 Javascript
javascript读取xml实现javascript分页
Dec 13 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
Apr 20 Javascript
node.js中的path.basename方法使用说明
Dec 09 Javascript
基于jQuery实现仿淘宝套餐选择插件
Mar 04 Javascript
JavaScript里实用的原生API汇总
May 14 Javascript
js简单工厂模式用法实例
Jun 30 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
Jul 12 Javascript
详谈AngularJs 控制器、数据绑定、作用域
Jul 09 Javascript
JavaScript利用fetch实现异步请求的方法实例
Jul 26 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
Jan 10 Javascript
一次Webpack配置文件的分离实战记录
Nov 30 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 IP及IP段进行访问限制的代码
2008/12/17 PHP
phpinfo 系统查看参数函数代码
2009/06/05 PHP
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
Thinkphp调用Image类生成缩略图的方法
2015/03/07 PHP
PHP 搜索查询功能实现
2016/11/29 PHP
PhpStorm本地断点调试的方法步骤
2018/05/21 PHP
jQuery语法总结和注意事项小结
2012/11/11 Javascript
jquery中get,post和ajax方法的使用小结
2014/02/04 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
2014/03/08 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
微信小程序 wxapp视图容器 view详解
2016/10/31 Javascript
template.js前端模板引擎使用详解
2017/10/10 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
2019/08/20 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
[01:27:30]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
解决pandas read_csv 读取中文列标题文件报错的问题
2018/06/15 Python
python中实现字符串翻转的方法
2018/07/11 Python
Python爬虫PyQuery库基本用法入门教程
2018/08/04 Python
pytorch permute维度转换方法
2018/12/14 Python
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
Python对Tornado请求与响应的数据处理
2020/02/12 Python
Python3读取和写入excel表格数据的示例代码
2020/06/09 Python
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
关于热爱祖国的演讲稿
2014/05/04 职场文书
中国梦演讲稿3分钟
2014/08/19 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
病危通知单
2015/04/17 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js
详解Python内置模块Collections
2022/03/22 Python