在“ng-repeat”迭代中使用AngularJs“ng-style”

时间:2013-04-19 19:17:14

标签: angularjs angularjs-ng-repeat ng-style

我想使用ng-style基于它们的值有条件地设置表中数据元素的颜色。使用ng repeat生成每行数据。

所以我有类似的东西:

<tr ng-repeat="payment in payments">
  <td ng-style="set_color({{payment}})">{{payment.number}}</td>

和我的控制器中的一个函数,它可以执行以下操作:

$scope.set_color = function (payment) {
  if (payment.number > 50) {
    return '{color: red}'
  }
}

我尝试了几件不同的事情。甚至将颜色设置为支付对象中的数据属性,但是我似乎无法使用ng-style来处理数据绑定中的数据, 有谁知道我可以做这个工作的方式?感谢。

3 个答案:

答案 0 :(得分:95)

请勿在Angular expression内使用{{}}:

<td ng-style="set_color(payment)">{{payment.number}}</td>

从函数中返回一个对象,而不是字符串:

$scope.set_color = function (payment) {
  if (payment.number > 50) {
    return { color: "red" }
  }
}

Fiddle

答案 1 :(得分:20)

使用此代码

<td style="color:{{payment.number>50?'red':'blue'}}">{{payment.number}}</td>

<td ng-style="{'color':(payment.number>50?'red':'blue')}">{{payment.number}}</td>
例如

蓝色

答案 2 :(得分:3)

它可能对你有帮助!

<!DOCTYPE html>
<html>

<head>
  <style>
    .yelloColor {
      background-color: gray;
    }
    .meterColor {
      background-color: green;
    }
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
  <script>
    var app = angular.module('ngStyleApp', []);
    app.controller('ngStyleCtrl', function($scope) {
      $scope.bar = "48%";
    });
  </script>
</head>

<body ng-app="ngStyleApp" ng-controller="ngStyleCtrl">
  <div class="yelloColor">
    <div class="meterColor" ng-style="{'width':bar}">
      <h4> {{bar}} DATA USED OF 100%</h4>
    </div>
  </div>
</body>

</html>