AngularJS ngClass条件
有没有办法让ng-class
这样的表达式成为一个条件?
例如,我曾试过以下的方法。
<span ng-class="{test: 'obj.value1 == \'someothervalue\''}">test</span>
这段代码的问题是,无论obj.value1
是什么,类测试总是应用于元素。这样做
<span ng-class="{test: obj.value2}">test</span>
只要obj.value2
不等于truthy值,类就不会被应用。 现在我可以通过这样做来解决第一个例子中的问题了。
<span ng-class="{test: checkValue1()}">test</span>
其中checkValue1
函数看起来像这样。
$scope.checkValue1 = function() {
return $scope.obj.value === 'somevalue';
}
我只是想知道ng-class
是否应该这样工作。 我也在建立一个自定义指令,我想做与此类似的事情。然而,我找不到观察表达式的方法(也许这是不可能的,也是它这样工作的原因)。
这里有一个plnkr来显示我的意思。
485
11
你的第一次尝试几乎是正确的,没有引号也应该可以。
这里有一个plnkr。
ngClass指令将与任何评价为truthy或falsey的表达式一起工作,这与Javascript表达式有点类似,但有一些不同,你可以阅读这里。 如果你的条件太复杂,那么你可以使用一个返回truthy或falsey的函数,就像你在第三次尝试时那样。
只是为了补充。你也可以使用逻辑运算符来形成逻辑表达式,如
在ng-repeat内使用ng-class
对于task.status中的每一个状态,都有一个不同的类被用于该行。
Angular JS在[ng-class Directive][1]中提供了这个功能。 在其中,你可以放置条件,也可以分配条件类。 你可以通过两种不同的方式来实现这个功能。
第1种
在这段代码中,该类将根据status值的值进行应用
如果status值为0,则应用类一。
如果status值为1,则应用two类。
如果status值为2,则应用类三。
第二类
根据status的值将适用于哪个类
如果status值为1或true,则会添加类test_yes。
如果status值为0或false,则会添加类test_no。
[1]: https://docs.angularjs.org/api/ng/directive/ngClass
我在上面看到了很好的例子,但它们都是以大括号(json map)开头的。 另一个选择是基于计算返回一个结果。 结果也可以是一个css类名的列表(不仅仅是map)。 例如:{{18477199}}。
或
解释:如果状态为激活,将使用 "启用 "类。 如果状态为激活,将使用 "enabled "类。 否则,将使用
disabled
类。列表"[]"用于使用多个类(而不仅仅是一个)。
有一个简单的方法,你可以用html类属性和速记if/else。 不需要做得那么复杂。 只要使用下面的方法就可以了。
快乐的编码。 Nimantha Perera
Angular的语法是使用:操作符来执行相当于if修改器的操作。
为偶数行添加clearfix类。尽管如此,表达式可以是我们在正常if条件下的任何东西,它应该评估为真或假。
我将向你展示两种方法,通过它们你可以动态地应用ng-class。
步骤1
通过使用三元运算符
产量
如果您的条件为真,那么class1将被应用到您的元素上,否则class2将被应用。
缺点
当你在运行时尝试改变条件值时,类不知为何不会改变。 所以,如果你有动态类改变的需求,我建议你走第二步。
第二步
产量
如果你的条件与value1匹配,那么class1将被应用到你的元素上,如果与value2匹配,那么class2将被应用,以此类推。 而动态类的改变也可以用它来实现。
希望对你有所帮助。
当有人需要运行复杂的逻辑来决定合适的CSS类时,使用带有ng-class的函数是一个不错的选择。
http://jsfiddle.net/ms403Ly8/2/
HTML:
CSS:
JavaScript。
用这个
例如如果条件是[2==2],状态为{true: '...', false: '...'}
对于Angular 2,使用这个
ng-class
是AngularJs核心的一个Directive,其中你可以使用"String Syntax""Array Syntax""Evaluated Expression"""。 其中你可以使用"字符串语法", "数组语法", "评估表达式", " 三元运算符"。 以及下面描述的更多选项。ngClass使用字符串语法
这是最简单的使用ngClass的方法。 你只需将一个Angular变量添加到 ng-class,这就是该元素将使用的类。
ngClass使用字符串语法][1]的演示例。
ngClass使用阵列语法
这与字符串语法方法类似,只是你可以应用多个类。
ngClass使用评价表达式。
使用ngClass的一个更高级的方法(也是你可能会用得最多的方法)是评估一个表达式。 它的工作原理是,如果一个变量或表达式的值为
true
,你就可以应用某个类。 如果不是,那么这个类就不会被应用。ngClass使用评价表达式][2]的例子。
ngClass 使用值
这与评估表达式方法类似,只是你可以用唯一的变量比较多个值。
ngClass使用三元运算符。
三元运算符允许我们使用速记符来指定两个不同的类,一个是表达式为真,一个是表达式为假。 下面是三元运算符的基本语法。
##评估首字母、尾字母或特定的数字。
如果你使用的是
ngRepeat
指令,并且你想将类应用于first
、last
或列表中的特定数字,你可以使用ngRepeat
的特殊属性。 这些属性包括$first
、$last
、$even
、$odd
以及其他一些属性。 下面是一个使用这些属性的例子。[1]: https://codepen.io/anon/pen/OeWKNE [2]: https://codepen.io/anon/pen/BgpXdG