Javascript AngularJS-如何添加多个ng类指令?
以下是使用Javascript AngularJS-如何添加多个ng类指令?,javascript,angularjs,ng-class,Javascript,Angularjs,Ng Class,以下是使用ng class指令的两种不同方法。我需要它们,在同一个元素上,但这不起作用 在ng类中使用对象 {{item} 正确的结果是 <div class="first">1</div> <div>2</div> <div>3</div> <div>4</div> <div class="last">5</div> 1 2. 3. 4. 5. 在ng类中使用表达式
ng class
指令的两种不同方法。我需要它们,在同一个元素上,但这不起作用
在ng类中使用对象
{{item}
正确的结果是
<div class="first">1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div class="last">5</div>
1
2.
3.
4.
5.
在ng类中使用表达式
{{item}
正确的结果是
<div class="count-1">1</div>
<div class="count-2">2</div>
<div class="count-3">3</div>
<div class="count-4">4</div>
<div class="count-5">5</div>
1
2.
3.
4.
5.
现在,把它们一起使用怎么样? 我需要动态类名(比如
'count-'+n
),但也需要多个类的对象语法
我不能只使用2ng class
attributes(),只有第一个可以工作
有什么建议吗?对于第二个建议,您不应该使用
ng类
<div class="count-{{$index + 1}}" ng-class="{ first: $first, last: $last }">
我想你可以用来分离心房ng级
代码>
尝试:
如果需要将它们混合在一起,只需选择字符串concat:
ng-class="'count-' + ($index+1) + ($first?' first':($last?' last':''))"
或者,为了更清晰地查看:
ng-class="'count-' + ($index+1) + ($first?' first':'') + ($last?' last':'')"
使用class=“{{exp}}”
而不是ng class=“exp”
没有已知的优点,因为当exp
的值更改时,两者都会更新。相反,在某些情况下,使用第一个可能会导致页面冻结。您应该为ngClass
提供一个同时包含表达式和对象的数组:
<div ng-class="['count-' + ($index + 1), { first: $first, last: $last }]">
注意:
公认答案中建议的解决方案(同时使用ngClass
指令和class
属性中的插值)是一种不好的做法。查看更多详细信息和。这似乎有效(),这可能是ie8更好的方法这对我不起作用,但这个答案确实起了作用,这似乎有效(),尽管我不确定ie8(不幸的是,plnkr在ie8中不起作用,我没有时间设置和测试它)根据angular docs,建议的解决方案是一种不好的做法:请参阅下面我的答案,了解建议的方法it@MaximKulikov-它没有说在任何地方,它说不要使用插值{}
与上面显示的语法不同。@tymeJV{{$index+1}
是一种插值,建议在class
属性中使用它,同时使用ngClass
directive@tymeJV引用文档:>不应在class属性的值中使用插值,当在同一个元素上使用ngClass指令时。谢谢,我不知道我们可以在ng类表达式中使用ternaries。
ng-class="'count-' + ($index+1) + ($first?' first':($last?' last':''))"
ng-class="'count-' + ($index+1) + ($first?' first':'') + ($last?' last':'')"
<div ng-class="['count-' + ($index + 1), { first: $first, last: $last }]">