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类型增加方法的实现代码(增加功能)
Dec 29 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
Feb 01 Javascript
JavaScript实现的简单拖拽效果
Jun 01 Javascript
jQuery实现标题有打字效果的焦点图代码
Nov 16 Javascript
javascript弹出带文字信息的提示框效果
Jul 19 Javascript
JavaScript实现广告弹窗效果
Aug 09 Javascript
jQuery中show与hide方法用法示例
Sep 16 Javascript
Form表单按回车自动提交表单的实现方法
Nov 18 Javascript
纯JS焦点图特效实例(可一个页面多用)
Dec 07 Javascript
smartupload实现文件上传时获取表单数据(推荐)
Dec 12 Javascript
详解Webpack-dev-server的proxy用法
Sep 08 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
Sep 02 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
利用浏览器的Javascript控制台调试PHP程序
2014/01/08 PHP
php中static和const关键字用法分析
2016/12/07 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
php实现的表单验证类完整示例
2019/08/13 PHP
在IE模态窗口中自由查看HTML源码的方法
2007/03/08 Javascript
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
详解vue-cli3多页应用改造
2019/06/04 Javascript
Vuex实现简单购物车
2021/01/10 Vue.js
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python异步任务队列示例
2014/04/01 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
超简单的Python HTTP服务
2019/07/22 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
让你的Python代码实现类型提示功能
2019/11/19 Python
基于python中__add__函数的用法
2019/11/25 Python
Ranorex通过Python将报告发送到邮箱的方法
2020/01/12 Python
python将logging模块封装成单独模块并实现动态切换Level方式
2020/05/12 Python
《望洞庭》教学反思
2014/02/16 职场文书
ktv好的活动方案
2014/08/17 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
2015年度班主任自我评价
2015/03/11 职场文书
圣诞晚会主持词
2015/07/01 职场文书
交通安全温馨提示语
2015/07/14 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书
十大必看国产动漫排名,魁拔上线,第二曾在日本播出
2022/03/18 国漫
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
2022/05/30 NodeJs
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS