Angularjs:根据当前项的属性在ng-repeat内的元素上设置类

时间:2016-09-04 16:55:35

标签: css

我正在尝试在ng-repeat内的元素上应用一个类,更重要的是,我想根据当前正在迭代的模型成员的属性来决定应用哪个类。为了说明,我有一个我从REST端点获取的建筑物列表,然后在表格中进行渲染。

<tr ng-repeat="building in buildings">
......
    <td>
        <i ng-class="{'icon-check' : building.elevator, 'icon-check-empty' : building.elevator}"></i>
          {{building.elevator}}
    </td>
</tr>

问题是我未能根据正在呈现的建筑物的<i>属性的值在elevator元素上设置类。 为了记录,{{building.elevator}}根据回复中的内容呈现为truefalse

我也试过在class属性中使用三元运算符而没有运气。

还尝试使用:

  

building.elevator ==&#39; true&#39; /&#39; false&#39;

而不只是:

  

building.elevator

没有结果。 请让我知道我在这里失踪了什么。

由于

修改
问题出现在Font Awesome的错误类中,我可能在搜索看起来像检查/不检查解决方案的东西时选择了一个不再存在的类。

供参考,以下是有效的代码:

<i ng-class="{'fa fa-check-circle-o' : building.elevator, 'fa fa-circle-o' : !building.elevator}"></i>

以及我收到的服务器响应的相关部分:

[{..., "elevator":false, ...}]

谢谢Nikhilesh Shivarathri&amp; user3273700为您的回复。你帮我提供了替代方案和指针,这让我最终怀疑这个错误的课程。

如果最终答案与我在此处提供的检查代码无关,我现在该怎么办?

1 个答案:

答案 0 :(得分:0)

我已经创建了您的要求的示例应用程序,请检查您是否在以下示例中遗漏了应用程序中的任何内容。

{{#each bookmarks as |bookmark|}} <div> {{bookmark.link.title}} </div> {{/each}} 更改为value.booleanField !== 'true' if 您的数据包含布尔字段而不是字符串。

&#13;
&#13;
value.booleanField !== true
&#13;
var app = angular.module('sample', []);

app.controller('samplecontroller', function($scope) {
  $scope.values = [{
    booleanField: 'true',
    name: 'Jospeh'
  }, {
    booleanField: 'false',
    name: 'John'
  }]

});
&#13;
.test-false {
background-color: red;
}
&#13;
&#13;
&#13;