转自:http://www.cnblogs.com/whitewolf/archive/2013/05/22/3092184.html
在前面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上的只能是数据和行为。
相关推荐
本文主要介绍AngularJS ng-class-even 指令,这里整理了ng-class-even基础知识资料,并附实例代码和效果图,学习AngularJS指令的朋友可以看下
ng-repeat-start与ng-repeat-end时AngularJS(1.2.x)扩展的,使用这两个指令可以灵活控制遍历形式。 例如: index.html <div class=uk-panel ng-controller=UserCtrl> <ul class=uk-list> <li ng-repeat-start=...
有三种方法: 1、通过$scope绑定(不推荐) 2、通过对象数组绑定 3、通过key/value键值对绑定 实现方法: 1、通过$scope绑定(不推荐): ...div ng-class={true:'selected',false:'unselected'}[is
**AngularJS 框架中的动画气泡** AngularJS 是一款强大的前端JavaScript框架,它提供了丰富的功能和灵活性,用于构建动态、交互式的Web应用...通过实践,你将更深入地理解AngularJS的动画机制和气泡动画的创建方法。
在使用ng-repeat的过程中,往往需要为每个生成的元素绑定一个模型(model),以便收集用户输入的数据。在某些场景下,ng-model的值是动态生成的,这时候就可能遇到问题,因为无法预知具体变量名,从而无法在控制器...
本文实例讲述了AngularJS中ng-class用法。分享给大家供大家参考,具体如下: 使用 ng-class 动态设置元素的类,方法是绑定一个代表所有需要添加的类的表达式。重复的类不会添加。当表达式发生变化,先前添加的类会被...
在AngularJS框架中,为了使用ng-class-odd等指令,首先需要引入AngularJS的库文件。在示例代码中,是通过引入一个外部CDN链接来实现的:`***"></script>`。之后,定义一个AngularJS模块和控制器,其中模块名为"myApp...
总结一下,通过使用`ng-repeat`和`ng-class`,我们可以轻松地在AngularJS应用中实现突出显示ng-repeat中的选定行。关键在于定义一个`isSelected`函数来根据当前选择的状态判断是否应用高亮类,以及一个`selectItem`...
让我们详细了解一下`ng-class`的用法。 首先,`ng-class`可以接受三种类型的值: 1. **对象映射方式**: 在示例中,`<p ng-class="{strike: deleted, bold: important, red: error}">`就是使用对象映射方式的例子...
本文将详细介绍ng-class在AngularJS中的三种使用方式,并分析其各自的适用场景与优缺点。 一、通过数据的双向绑定使用ng-class 第一种方法是利用AngularJS的数据绑定特性来实现ng-class的功能。这种方式下,我们...
本文将深入探讨如何使用`ng-class`来切换类,并提供两种常见的用法:字符串数组形式和对象键/值处理。 1. 字符串数组形式: 这种形式适用于简单的类切换,特别是当类之间存在排斥性时。例如,`isActive`为`true`时...
本文将详细介绍如何使用AngularJS中的ng-class指令来动态切换HTML元素的样式。ng-class指令是AngularJS中用于动态控制CSS类名的一个非常强大的工具,它可以根据表达式的值来添加或移除CSS类。 在本文中,将会通过...
AngularJS 是一个强大的前端JavaScript框架,它提供了丰富的指令来增强HTML的功能。其中之一便是`ng-class`指令,这个指令允许我们动态...理解并熟练使用`ng-class`,将有助于提升AngularJS应用的用户体验和交互效果。
9. **最佳实践**:此示例可能还包括了遵循 AngularJS 最佳实践的方式,如使用控制器-as 语法以减少作用域污染,以及使用 `ng-show` 或 `ng-hide` 而不是 `ng-if` 以提高性能。 通过对这个 "angularjs-dbaas" 项目的...
本篇文章将详细探讨如何在AngularJS下使用`ng-repeat`和`ng-class`实现这样的功能。 首先,让我们回顾一下`ng-repeat`的基本用法。`ng-repeat`接收一个表达式,该表达式通常是一个数组或对象的迭代。例如,如果你有...
`ng-animate`和`ng-cookies`是AngularJS中的两个重要组件,分别用于处理动画和管理cookies。 `ng-animate`是Angular的一个插件模块,它允许开发者在Angular的特定事件(如`ng-show`、`ng-hide`、`ng-repeat`等)...