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 相关文章推荐
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
May 24 Javascript
Prototype源码浅析 Enumerable部分之each方法
Jan 16 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
Jun 23 Javascript
基于bootstrap3和jquery的分页插件
Jul 31 Javascript
AngularJS控制器controller正确的通信的方法
Jan 25 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
Dec 07 Javascript
纯js实现html转pdf的简单实例(推荐)
Feb 16 Javascript
jQuery Tree Multiselect使用详解
May 02 jQuery
angular中ui calendar的一些使用心得(推荐)
Nov 03 Javascript
使用async-validator编写Form组件的方法
Jan 10 Javascript
解决vue中post方式提交数据后台无法接收的问题
Aug 11 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
Sep 07 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
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
2007/03/15 PHP
PHP CURL使用详解
2019/03/21 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
javascript中的几个运算符
2007/06/29 Javascript
jQuery Ajax文件上传(php)
2009/06/16 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
微信小程序商城项目之淘宝分类入口(2)
2017/04/17 Javascript
使用JavaScript开发跨平台的桌面应用详解
2017/07/27 Javascript
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
js回调函数原理与用法案例分析
2020/03/04 Javascript
python 正则式 概述及常用字符
2009/05/07 Python
Python 迭代器工具包【推荐】
2016/05/06 Python
详解Python中的__getitem__方法与slice对象的切片操作
2016/06/27 Python
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
使用python进行广告点击率的预测的实现
2019/07/04 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
白兰氏健康Mall:BRAND’S
2017/11/13 全球购物
定制iPhone和Macbook保护壳:Slick Case
2018/11/21 全球购物
法雷奥SQA(electric)面试问题
2016/01/23 面试题
大三预备党员入党思想汇报
2014/01/08 职场文书
大学生实习证明范本
2014/01/15 职场文书
图书室管理制度
2014/01/19 职场文书
护士自我评价
2014/02/01 职场文书
贷款委托书范本
2014/04/08 职场文书
安全责任书范本
2014/04/15 职场文书
2015年司法局工作总结
2015/05/22 职场文书
毕业生自荐求职信书写的技巧
2019/08/26 职场文书
Nginx解决前端访问资源跨域问题的方法详解
2021/03/31 Servers
Node实现搜索框进行模糊查询
2021/06/28 Javascript
Spring Boot DevTools 全局配置学习指南
2022/03/31 Java/Android
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA