2015-04-21 25 views
6

Sono nuovo a AngularJs sto ottenendo i dati JSON che è in formato:tabella in base ai risultati

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

voglio calcolare ogni marchi studenti e se segni è inferiore al 40%, allora riga della tabella dovrebbe essere rosso altrimenti dovrebbe essere verde. Ho provato. 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;} 

sto ottenendo percentuale ma secondo percentuale Non ricevo il colore fila.

+5

quando nuovo per angularjs è molto buono non utilizzare QUALSIASI jQuery – DrCord

+0

In realtà non vedo dove viene utilizzato jQuery. – Nick

+1

Penso che molte persone confondano jQuery con Javascript. – Scottie

risposta

9

È necessario ngClass

La direttiva ngClass consente di impostare dinamicamente classi CSS su un elemento HTML dai associazione dati un'espressione che rappresenta tutte le classi da aggiungere.

Codice

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

O, Da commento @RevanProdigalKnight

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

quando si chiama la funzione con ngIf, don; t bisogno di interpolazione di stringhe.

Usa

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

invece di

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

Ho provato che ma il suo non mi sta dando il risultato desiderato –

+0

e se mai, se vuoi cambiare classe a seconda di un valore .... dovresti usare ng-class. . . – Steve

+3

Si potrebbe anche avere 'ng-class =" co (per (x))? 'Pass': 'fail' "' – RevanProdigalKnight

1

ng-se effettivamente rimuovere la riga dalla DOM se è inferiore al 40%.

Vorrete

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

Come nota a margine, si consiglia di non utilizzare le funzioni di NG-ripete perché le prestazioni possono soffrire in modo significativo.

Problemi correlati