AngularJS ng-class不起作用

时间:2017-05-12 22:33:18

标签: javascript css angularjs

我按以下方式为表格单元格设置ng-class:

<td data-ng-repeat="t in report.tags|orderBy:'seq'" data-ng-class='{red : state==3 || state==4 , green: state==1 || state==2}'> {{ t.cell_content}}</td>

其中state是数组tags中对象的属性(因此可以作为t.state访问)

CSS中的

我有以下几行:

.red {
    background: red; 
}

.green {
    background: green;
}

但是,即使此CSS文件的其他参数(在代码的另一部分中)工作正常,单元格仍保持白色。

我哪里错了?

注意:使用t.state并不能解决问题 我确信state只有值1,2,3或4

3 个答案:

答案 0 :(得分:1)

如果我真正理解了你的问题,那么状态就是数组中对象的属性,所以这里是Jsfiddle的例子,它正常工作我只使用 t.state 而不是 state < / strong>,其他一切正常

<div ng-app>
  <div ng-controller="test">
  <table>
  <tr>
    <td ng-repeat='t in arr'  data-ng-class='
  {red : t.state==3 || t.state==4 ,green: t.state==1 || t.state==2}'> {{t.state}}
  </td>    
  </tr>
  </table> 

和角度控制器将如下所示

function test($scope) {
    $scope.arr = [{
        state: 1
    }, {
        state: 2
    }, {
        state: 3
    }]
}

答案 1 :(得分:0)

谢谢你们,我已经为我的条件添加了()括号,它神奇地开始工作

   <td data-ng-repeat="t in report.tags|orderBy:'seq'" data-ng-class='{red : (t.state==3 || t.state==4) , green: (t.state==1 || t.state==2)}'> {{ t.cell_content}}</td>

答案 2 :(得分:-3)

您不应该使用t.state而不是state。并且在你想要的类名周围单引号''

<td data-ng-repeat="t in report.tags|orderBy:'seq'" data-ng-class='{'red' : t.state==3 || t.state==4 , 'green': t.state==1 || t.state==2}'> {{ t.cell_content}}</td>