angularJS中ng-class指令的三种实现方式

简介: angularJS中ng-class指令的三种实现方式

引言


在我们开发中经常会遇到这样的需求,一个元素需要在不同的状态下呈现不同的样子,而在这所谓的的样子当然就是改变其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>

实现很简单,就是当className为true的时候class为change1,相反则为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>


当lala为true的时候,class则为change3,个人认为这个是比较推荐的,可以弥补第二种方式的点点遗憾~


小结


我们如果在项目中可以灵活的运用这些指令会给我们带来非常多的便利,我们在解决问题的时候能有更多的思路,这样我们可以组合的使用这些指令来快速的解决一些比较苦恼的问题!!

目录
相关文章
|
JSON Java 数据库
java 常用注解大全、注解笔记
关于Java常用注解的大全和笔记,涵盖了实体类、JSON处理、HTTP请求映射等多个方面的注解使用。
490 0
java 常用注解大全、注解笔记
|
前端开发 JavaScript 编译器
sass 混入 (@mixin 与 @include的使用)
sass 混入 (@mixin 与 @include的使用)
737 0
|
JSON 前端开发 JavaScript
【vue3-element-admin】ESLint+Prettier+Stylelint+EditorConfig 约束和统一前端代码规范
【vue3-element-admin】ESLint+Prettier+Stylelint+EditorConfig 约束和统一前端代码规范
|
JavaScript
js中数组的深拷贝的方法
js中数组的深拷贝的方法
394 1
|
前端开发 开发工具 git
Git报错处理:解决git commit时的lint-staged错误提示。
极好的,你对Git的lint-staged出了一个令人头疼的问题。让我们一起钻研一下,找到一种方法来解决一切。 首先,我们要确定你是在做什么操作时候遇到了问题。lint-staged通常在我们运行 git commit 时启动,它做的工作是在你提交之前运行一些指定的命令检查你的代码。当lint-staged报错,多半是因为检查未通过,或者它试图运行的命令存在问题。 让我们以一种图解的方式来描绘一下这个过程,就像canvas上的画面那样。git正在温柔的将你的修改捆绑起来,准备提交。突然,lint-staged走了出来,并开始盘问着Git,寻找可能的错误。如果lint-staged找到了什么
1153 24
|
Windows
win10家庭版安装iis 微软web服务器 windows安装IIS web服务器
win10家庭版安装iis 微软web服务器 windows安装IIS web服务器
447 0
|
JavaScript 前端开发 索引
如何快速实现一个无缝轮播效果
【8月更文挑战第24天】如何快速实现一个无缝轮播效果
272 2
如何快速实现一个无缝轮播效果
|
Web App开发 编解码 弹性计算
实时云渲染技术布道 | 像素流送技术与商业化实时云渲染产品的指标对比
随着虚幻引擎(UE)在高品质应用开发中的广泛应用,大内容与轻终端的矛盾日益突出。实时云渲染技术应运而生,成为解决这一矛盾的关键。本文以LarkXR实时云渲染平台为例,对比UE自带的像素流送插件,探讨云渲染技术的革新。LarkXR提供完整的实时云渲染PaaS服务,涵盖云端算力管理、网络传输优化和异构终端接入全流程,支持2K-8K分辨率、30-120FPS帧率,具备强大的集群并发能力和多引擎兼容性,整体性价比远高于像素流送,为开发者提供了更高效、专业可靠的解决方案。
|
缓存 负载均衡 监控
你应该学习一下Openresty(许多大厂都在用)了!!!
你应该学习一下Openresty(许多大厂都在用)了!!!
936 0
你应该学习一下Openresty(许多大厂都在用)了!!!
|
敏捷开发 存储 数据可视化
低代码开发平台核心功能设计——组件自定义交互实现
笔者最近一直在研究Lowcode(低代码)平台, 也做了非常多的实践, 对于页面可视化搭建平台有了基本的研发方向和解决方案, 后期会陆续分享我对低代码平台的一些理解和解决方案, 并在企业应用层做一些探索.
1596 0