Использование AngularJs "ng-style" в итерации "ng-repeat"
Я пытаюсь условно установить цвета элементов данных в таблице на основе их значения, используя ng-стиль. Каждая строка данных генерируется с использованием повторения ng.
Итак, у меня есть что-то вроде:
<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-стиль для обработки данных из привязок данных,
Кто-нибудь знает, как я могу это сделать? Спасибо.
Ответы
Ответ 1
Не используйте {{}} s внутри выражения Angular:
<td ng-style="set_color(payment)">{{payment.number}}</td>
Верните объект, а не строку, из вашей функции:
$scope.set_color = function (payment) {
if (payment.number > 50) {
return { color: "red" }
}
}
Fiddle
Ответ 2
используйте этот код
<td style="color:{{payment.number>50?'red':'blue'}}">{{payment.number}}</td>
или
<td ng-style="{'color':(payment.number>50?'red':'blue')}">{{payment.number}}</td>
синий цвет, например
Ответ 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>