AngularJS ng-class能否同时绑定数据类与条件类?
嘿,我来帮你搞定这个AngularJS的ng-class问题!你之前的写法主要是没踩准ng-class的正确语法格式,咱们直接上可行的解决方案:
方案一:用数组语法(最直观的方式)
ng-class支持数组形式,你可以把需要应用的类表达式逐个放进数组里,用逗号分隔就行。修正后的代码如下:
<div class="trow" ng-class="[rowClass($index), data.accounts[k.id].checked ? 'checked' : '']" ng-repeat="k in accounts | filter:{location_id: location.id}">
这个写法的逻辑很清晰:
- 第一个元素
rowClass($index)会调用你的函数返回动态类 - 第二个元素是三元表达式,当
data.accounts[k.id].checked为真时添加checked类,否则空字符串(不添加)
方案二:用字符串拼接(适合简单场景)
如果你的需求比较简单,也可以直接把两个类的结果拼接成字符串:
<div class="trow" ng-class="rowClass($index) + (data.accounts[k.id].checked ? ' checked' : '')" ng-repeat="k in accounts | filter:{location_id: location.id}">
注意这里要给checked前面加个空格,避免和函数返回的类名连在一起导致失效。
为啥你之前的写法不行?
- 第一种写法没加数组的方括号
[],AngularJS无法识别这是多个类的组合 - 第二种对象语法的格式错误,对象语法要求是
{类名: 条件}的键值对形式,没法直接把函数返回的动态类塞进对象里(除非用更复杂的构造,但完全没必要)
选数组语法就够啦,既清晰又好维护!
内容的提问来源于stack exchange,提问作者john doe
相关产品推荐
相关产品推荐

