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实现随意改变div任意属性的名称和值(部分原生js实现)
May 28 Javascript
javascript dom追加内容实现示例
Sep 21 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
Nov 03 Javascript
javascript实现的图片切割多块效果实例
May 07 Javascript
AngularJS 作用域详解及示例代码
Aug 17 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
Sep 04 Javascript
微信小程序 实现拖拽事件监听实例详解
Nov 16 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
Jun 05 Javascript
vue实现页面加载动画效果
Sep 19 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
May 28 Javascript
Jquery异步上传文件代码实例
Nov 13 jQuery
JavaScript将数组转换为链表的方法
Feb 16 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 PDO函数库详解
2010/04/27 PHP
apache和php之间协同工作的配置经验分享
2013/04/08 PHP
PHP 验证身份证是否合法的函数
2017/02/09 PHP
详谈php ip2long 出现负数的原因及解决方法
2017/04/05 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
document.compatMode介绍
2009/05/21 Javascript
js判断为空Null与字符串为空简写方法
2014/02/24 Javascript
Nodejs实现的一个简单udp广播服务器、客户端
2014/09/25 NodeJs
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
jQuery中[attribute]选择器用法实例
2014/12/31 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
2016/10/29 Javascript
手机端js和html5刮刮卡效果
2020/09/29 Javascript
JavaScript创建对象的七种方式(推荐)
2017/06/26 Javascript
vue.js框架实现表单排序和分页效果
2017/08/09 Javascript
Vue 实现前端权限控制的示例代码
2019/07/09 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
[02:42]DOTA2英雄基础教程 杰奇洛
2013/12/23 DOTA
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
2014/06/09 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
用C#语言写出在本地创建一个UDP接收端口的具体过程
2016/02/22 面试题
大众服装店创业计划书范文
2014/01/01 职场文书
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
《我要的是葫芦》教学反思
2014/02/23 职场文书
护理专科毕业自荐信范文
2014/04/21 职场文书
劳资协议书范本
2014/04/23 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
购房委托书范本
2014/09/18 职场文书
宿舍管理制度范本
2015/08/07 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书
导游词之沈阳植物园
2019/11/30 职场文书
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python