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 相关文章推荐
JavaScript 输入框内容格式验证代码
Feb 11 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
Nov 19 Javascript
angularjs学习笔记之双向数据绑定
Sep 26 Javascript
TypeOf这些知识点你了解吗
Feb 21 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
Apr 06 Javascript
分享一个插件实现水珠自动下落效果
Jun 01 Javascript
jQuery实用小技巧_输入框文字获取和失去焦点的简单实例
Aug 25 Javascript
ionic开发中点击input时键盘自动弹出
Dec 23 Javascript
Vue获取DOM元素样式和样式更改示例
Mar 07 Javascript
jQuery实现动态删除LI的方法
May 30 jQuery
详解操作虚拟dom模拟react视图渲染
Jul 25 Javascript
详解webpack4.x之搭建前端开发环境
Mar 28 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
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
2014/08/23 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
2014/08/25 PHP
PHP 断点续传实例详解
2017/11/11 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
Laravel使用RabbitMQ的方法示例
2019/06/18 PHP
Laravel中正确地返回HTTP状态码方法示例
2019/09/10 PHP
jQuery 加上最后自己的验证
2009/11/04 Javascript
javascript Window及document对象详细整理
2011/01/12 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
基于javascript的JSON格式页面展示美化方法
2014/07/02 Javascript
JavaScript中的pow()方法使用详解
2015/06/15 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
AngularJS中scope的绑定策略实例分析
2017/10/30 Javascript
Vue脚手架的简单使用实例
2018/07/10 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
JavaScript Dom 绑定事件操作实例详解
2019/10/02 Javascript
Node.js API详解之 zlib模块用法分析
2020/05/19 Javascript
使用Python中的cookielib模拟登录网站
2015/04/09 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
2019/11/22 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
洲际酒店集团美国官网:IHG美国
2017/11/16 全球购物
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
求职信标题怎么写
2014/05/26 职场文书
代办委托书怎么写
2014/08/01 职场文书
幼儿园法制宣传日活动总结
2014/11/01 职场文书
营销与策划实训报告
2014/11/05 职场文书
运动会100米广播稿
2015/08/19 职场文书
初中班主任培训心得体会
2016/01/07 职场文书
2016优秀班主任个人先进事迹材料
2016/02/26 职场文书
2019年思想汇报
2019/06/20 职场文书
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL