2015-04-21 11 views
6

Ich bin neu in AngularJS ich json Daten immer bin, die in Format ist:Tabellenzeile Farbe nach führen

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

Ich mag jeden Student Noten berechnen und wenn Mark weniger als 40%, dann Zeile Tabelle sollte sei rot, sonst sollte es grün sein. Ich habe es versucht. 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;} 

ich Prozentsatz bin immer aber nach Prozentsatz ich nicht die Zeilenfarbe bin immer.

+5

wenn neu zu angularjs ist es sehr gut, keine ANY jQuery zu verwenden – DrCord

+0

Ich sehe tatsächlich nicht, wo jQuery verwendet wird. – Nick

+1

Ich denke, viele Leute verwechseln jQuery mit Javascript. – Scottie

Antwort

9

Sie benötigen ngClass

Die ngClass Direktive ermöglicht es Ihnen, CSS-Klassen auf einem HTML-Element dynamisch auf durch einen Ausdruck Datenbindung, die alle Klassen repräsentiert hinzugefügt werden.

-Code

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

OR, Von @RevanProdigalKnight Kommentar

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

, wenn die Funktion mit ngIf Aufruf, ziehen Sie; t String Interpolation benötigen.

Verwenden

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

statt

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

Ich habe das versucht, aber es ist nicht geben Sie mir das gewünschte Ergebnis –

+0

und wenn überhaupt, wenn Sie Klassen abhängig von einem Wert ändern möchten .... sollten Sie ng-Klasse verwenden. . . – Steve

+3

Sie könnten auch 'ng-Klasse =" co (per (x)) haben? 'Pass': 'fail' "' – RevanProdigalKnight

1

ng-, wenn die Zeile aus dem DOM tatsächlich entfernen, wenn sie unter 40% ist.

Sie werden

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

Als Randbemerkung möchten, wird empfohlen, keine Funktionen in ng-Wiederholungen zu verwenden, da die Leistung erheblich leiden kann.

Verwandte Themen