详解angularJs中关于ng-class的三种使用方式说明


Posted in Javascript onJune 02, 2017

在开发中我们通常会遇到一种需求:一个元素在不同的状态需要展现不同的样子。

而在这所谓的样子当然就是改变其css的属性,而实现能动态的改变其属性值,必然只能是更换其class属性

这里有三种方法:

第一种:通过数据的双向绑定(不推荐)

第二种:通过对象数组

第三种:通过key/value( 推荐 )

下面简单说下这三种:

第一种:通过数据的双向绑定

实现方式:

function changeClass(){
 $scope.className = "change2";
}

<div class="{{className}}"></div>

网上各种不推荐,说实话,既然angularJS双向数据绑定这么吊,为什么不能通过这个来改变呢!查了下原由:“在controller涉及了classname在我看来是乎总是那么诡异,我希望的是controller是一个干净的纯javascript意义的object”,当然并没有明文固定不能够这么使用的,而且反而我觉得这样非常的方便,让html中元素想怎么变就怎么变!同理中的img元素中的src就不可以通过别的来改变,但是通过这种方式就是可以的!

当然,这种方式也的确给人的感觉怪怪的,个人认为:可以不得已而为之~

第二种:通过字符串数组的形式来改变

实现方式:

function changeClass(){
 $scope.className = true/false;
}
 
<div ng-class="{true:'zhende',false:'jiade'}[className]"></div>

实现很简单,就是当className为真的时候class为zhende,相反则为jiade。

但是有一点不好的只能够让一个元素拥有两种状态,虽然这么说!基本也是满足所需了,我一般都用这个。简单、直观!

第三种:通过key/value的方式

实现方式:

function changeClass(){
 $scope.lala = true;
}
 
<div ng-class="{'selectClass':select,'choiceClass':choice,'haha':lala}"></div>

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
鼠标经过的文本框textbox变色
May 21 Javascript
JavaScript 学习技巧
Feb 17 Javascript
JS中的substring和substr函数的区别说明
May 07 Javascript
JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
Oct 17 Javascript
JavaScript 作用域链解析
Nov 13 Javascript
js 概率计算(简单版)
Sep 12 Javascript
Bootstrap Table列宽拖动的方法
Aug 15 Javascript
Javascript实现时间倒计时功能
Nov 17 Javascript
快速了解Node中的Stream流是什么
Feb 13 Javascript
关于微信小程序map组件z-index的层级问题分析
Jul 09 Javascript
解决VUE双向绑定失效的问题
Oct 29 Javascript
Vue包大小优化的实现(从1.72M到94K)
Feb 18 Vue.js
vue.js删除动态绑定的radio的指定项
Jun 02 #Javascript
vue.js选中动态绑定的radio的指定项
Jun 02 #Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
Jun 02 #jQuery
Vue.js中数据绑定的语法教程
Jun 02 #Javascript
SpringMVC+bootstrap table实例详解
Jun 02 #Javascript
BootStrap daterangepicker 双日历控件
Jun 02 #Javascript
ES6中箭头函数的定义与调用方式详解
Jun 02 #Javascript
You might like
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
php 遍历数据表数据并列表横向排列的代码
2009/09/05 PHP
php mysql 判断update之后是否更新了的方法
2012/01/10 PHP
php中this关键字用法分析
2016/12/07 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
jquery中each方法示例和常用选择器
2014/07/08 Javascript
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
灵活的理解JavaScript中的this指向
2016/02/25 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
2016/05/16 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
mint-ui 时间插件使用及获取选择值的方法
2018/02/09 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
python中getaddrinfo()基本用法实例分析
2015/06/28 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
python中使用正则表达式的连接符示例代码
2017/10/10 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
基于python指定包的安装路径方法
2018/10/27 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
python实现查找所有程序的安装信息
2020/02/18 Python
详解CSS3开启硬件加速的使用和坑
2017/08/21 HTML / CSS
西班牙在线宠物商店:zooplus.es
2017/02/24 全球购物
李宁官方网店:中国运动品牌
2017/11/02 全球购物
好的自荐信包括什么内容
2013/11/07 职场文书
工厂厂长的职责
2013/12/12 职场文书
业务员的岗位职责
2014/03/15 职场文书
高一新生军训方案
2014/05/12 职场文书
通过shell脚本对mysql的增删改查及my.cnf的配置
2021/07/07 MySQL
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android