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分页
Jun 07 Javascript
return false;和e.preventDefault();的区别
Jul 11 Javascript
window.open的页面如何刷新(父页面)上层页面
Dec 28 Javascript
js 判断上传文件大小及格式代码
Nov 13 Javascript
JS对象转换为Jquery对象实现代码
Dec 29 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
Jun 05 Javascript
JS制作手机端自适应缩放显示
Jun 11 Javascript
npm国内镜像 安装失败的几种解决方案
Jun 04 Javascript
Angular2学习笔记之数据绑定的示例代码
Jan 03 Javascript
vue插件draggable实现拖拽移动图片顺序
Dec 01 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
Aug 20 Javascript
jQuery插件simplePagination的使用方法示例
Apr 28 jQuery
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
一个ftp类(ini.php)
2006/10/09 PHP
php csv操作类代码
2009/12/14 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
php实现头像上传预览功能
2017/04/27 PHP
javascript Math.random()随机数函数
2009/11/04 Javascript
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
js constructor的实际作用分析
2011/11/15 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
JQuery给元素添加/删除节点比如select
2013/04/02 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
2015/10/23 Javascript
jquery实现简单的banner轮播效果【实例】
2016/03/30 Javascript
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
Angular将填入表单的数据渲染到表格的方法
2017/09/22 Javascript
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
使用layui 渲染table数据表格的实例代码
2018/08/19 Javascript
socket在egg中的使用实例代码详解
2019/05/30 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
vue打包npm run build时候界面报错的解决
2020/08/13 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
[02:53]DOTA2英雄基础教程 山岭巨人小小
2013/12/09 DOTA
python去掉字符串中重复字符的方法
2014/02/27 Python
使用Python实现企业微信的自动打卡功能
2019/04/30 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
pytorch实现seq2seq时对loss进行mask的方式
2020/02/18 Python
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
大学生个人总结的自我评价
2013/10/05 职场文书
党员政治学习材料
2014/05/14 职场文书
会计毕业生自荐书
2014/06/12 职场文书
2015毕业生实习期工作总结
2015/04/09 职场文书
爱护环境卫生倡议书
2015/04/29 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
父母教会我观后感
2015/06/17 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL