Angular ng-class详解及实例代码


Posted in Javascript onSeptember 19, 2016

 在前面Angularjs开发一些经验总结中我们说到在angular开发中angular controller never 包含DOM元素(html/css),在controller需要一个简单的POJO(plain object javascript object),与view完全的隔离(交互angularjs框架的职责。但在某些项目中看见controller涉及DOM的元素最多的是在controller scope上定义某变量,其值为class name,形如:

function ctr($scope){
  $scope.test =“classname”;
}

<div class=”{{test}}”></div>

     这种方式完全没错,是angular提供的一种改变class的方式,但是在controller涉及了classname在我看来是乎总是那么诡异,我希望的是controller是一个干净的纯javascript意义的object。

在angular中为我们提供了3种方案处理class:

1:scope变量绑定,如上例。(不推荐使用)
2:字符串数组形式。
3:对象key/value处理。

我们继续其他两种解决方案:

1字符串数组形式是针对class简单变化,具有排斥性的变化,true是什么class,false是什么class,其形如;

function Ctr($scope) { 
  $scope.isActive = true;
}

<div ng-class="{true: 'active', false: 'inactive'}[isActive]">
</div>

其结果是2中组合,isActive表达式为true,则 active,负责inactive。

2对象key/value处理主要针对复杂的class混合,其形如:

function Ctr($scope) { 

}

<div ng-class {'selected': isSelected, 'car': isCar}">
</div>

当 isSelected = true 则增加selected class,

当isCar=true,则增加car class,

所以你结果可能是4种组合。

个人推荐用2,3两种方式,不建议将class放入controller scope之上,scope需要保持纯洁行,scope上的只能是数据和行为。

以上就是对Angular ng-class详解,后续继续补充相关资料,谢谢大家对本站的支持!

Javascript 相关文章推荐
JS 学习笔记 防止发生命名冲突
Jul 30 Javascript
自己整理的一个javascript日期处理函数
Oct 16 Javascript
js 判断上传文件大小及格式代码
Nov 13 Javascript
跟我学习javascript的隐式强制转换
Nov 16 Javascript
js中使用使用原型(prototype)定义方法的好处详解
Jul 04 Javascript
BootStrap Table 获取同行不同列元素的方法
Dec 19 Javascript
微信小程序 下拉菜单简单实例
Apr 13 Javascript
微信小程序 新建登录页并实现tabBar隐藏
Jun 13 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
May 29 Javascript
JavaScript中var的重要性实例分析
Jul 09 Javascript
vue fetch中的.then()的正确使用方法
Apr 17 Javascript
Vue实现tab导航栏并支持左右滑动功能
Jun 28 Vue.js
javascript实现的左右无缝滚动效果
Sep 19 #Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
Sep 19 #Javascript
BootStrap入门教程(三)之响应式原理
Sep 19 #Javascript
HTML5 实现的一个俄罗斯方块实例代码
Sep 19 #Javascript
javascript this详细介绍
Sep 19 #Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
Sep 19 #Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
Sep 19 #Javascript
You might like
提升PHP执行速度全攻略
2006/10/09 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
JS 对象介绍
2010/01/20 Javascript
js href的用法
2010/05/13 Javascript
让AJAX不依赖后端接口实现方案
2012/12/03 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
2013/11/26 Javascript
js 判断控件获得焦点的示例代码
2014/03/04 Javascript
javascript伸缩型菜单实现代码
2015/11/16 Javascript
JS深度拷贝Object Array实例分析
2016/03/31 Javascript
基于jQuery实现一个marquee无缝滚动的插件
2017/03/09 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
2017/08/19 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
2018/06/08 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
2018/07/03 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
js实现弹幕飞机效果
2020/08/27 Javascript
[07:31]DOTA2卡尔工作室 英雄介绍主宰篇
2013/06/25 DOTA
python实现360的字符显示界面
2014/02/21 Python
python实现文件快照加密保护的方法
2015/06/30 Python
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
python实现抠图给证件照换背景源码
2019/08/20 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
PYcharm 激活方法(推荐)
2020/03/23 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
Python编写单元测试代码实例
2020/09/10 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
PUMA澳大利亚官方网站:德国运动品牌
2018/10/19 全球购物
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
保护动物倡议书
2014/04/15 职场文书
2015年科学教研组工作总结
2015/07/22 职场文书
创业计划书之家政服务
2019/09/18 职场文书
pytorch MSELoss计算平均的实现方法
2021/05/12 Python