web-dev-qa-db-ja.com

「ng-repeat」イテレーション内でAngularJs「ng-style」を使用する

Ngスタイルを使用して、値に基づいてテーブル内のデータ要素の色を条件付きで設定しようとしています。 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スタイルを取得することはできないようです。ありがとう。

37

角度式 内で{{}}を使用しないでください:

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

関数から文字列ではなくオブジェクトを返します。

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

フィドル

95
Mark Rajcok

このコードを使用

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

または

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

たとえば青い色

21

それはあなたを助けるかもしれません!

<!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>
3
Anil Singh