2015-04-21 2 views
6

Я новичок в AngularJs я получаю JSON данные, в формате:Строка таблицы цвета в соответствии с результатом

[ 
    { 
    'StudentName':'abc', 
    'maths':'0', 
    'english':'0', 
    'economics':'0', 
    } 
] 

Я хочу, чтобы вычислить каждый студентов знаки и если знаки меньше 40%, то строка таблицы РЕКОМЕНДУЕМЫМ быть еще красным, должен быть зеленым. Я пробовал. HTML

<div ng-app="MyApp" ng-controller="con1"> 
    <table id="table1"> 
    <tr> 
     <th>student Name</th> 
     <th>History Marks</th> 
     <th>Maths Marks</th> 
     <th>Economics Marks</th> 
     <th>Percentage</th> 
    </tr> 
    <tr ng-repeat="x in data" ng-if="{{co(per(x))}}" ng-class="pass"> 
     <td>{{x.StudentName}}</td> 
     <td>{{x.maths}}</td> 
     <td>{{x.economics}}</td> 
     <td>{{x.english}}</td> 
     <td>{{per(x)}}%</td> 
    </tr> 
    </table> 

Script

var app = angular.module('MyApp', []); 
app.controller('con1', function ($scope, $http) { 
    $http.get('/ajax/data').success(function (res) { $scope.data = res; }); 
    $scope.per = function (x) { 
     avg = ((parseInt(x.maths) + parseInt(x.economics) + parseInt(x.english)) * 100)/300; 
     return avg; 
    }; 
    $scope.co = function (x) { (x > 40) ? k = 1 : k = 0; return (k); } 
}); 

CSS

.pass{background:green;} 
.fail{background:red;} 

Я получаю процент, но в зависимости от процента я не получаю цвет строки.

+5

, когда новый для angularjs очень хорош, чтобы не использовать ЛЮБОЙ jQuery – DrCord

+0

На самом деле я не вижу, где используется jQuery. – Nick

+1

Я думаю, что многие люди путают jQuery с Javascript. – Scottie

ответ

9

Вам нужно ngClass

директива ngClass позволяет динамически устанавливать классы CSS на HTML-элемента с помощью привязки данных выражение, представляющее собой все классы, которые будут добавлены.

Код

ng-class='{ "pass" : co(per(x)) == 1, "fail" : co(per(x)) == 0 }' 

ИЛИ, От @RevanProdigalKnight комментария

ng-class="co(per(x)) ? 'pass' : 'fail'" 

при вызове функции с ngIf, Вы не; нужна интерполяция строки.

Использование

ng-if="co(per(x))" 

вместо

ng-if="{{co(per(x))}}" 
+0

Я пробовал это, но его не давая мне желаемого результата –

+0

и, если угодно, если вы хотите изменить классы в зависимости от значения .... вы должны использовать ng-класс. , , – Steve

+3

У вас также может быть 'ng-class =" co (per (x))? 'Pass': 'fail' "' – RevanProdigalKnight

1

нг-, если фактически будет удалить строку из DOM, если она ниже 40%.

Вы хотите

<tr ng-repeat="x in data" ng-class="{ 'pass' : per(x) > 40 }"> 

Как примечание стороны, рекомендуется не использовать функции в нг-повторов, поскольку производительность может существенно пострадать.

Смежные вопросы