2016-02-11 4 views
5

Ich wollte die Klasse dynamisch hinzufügen, wenn die ganze Zahl positiv oder negativ ist. Ich habe versucht, eine Funktion aus dem HTML aufzurufen, aber das scheint kein richtiger Weg zu sein. Unten ist mein Plunker ..Klasse dynamisch zu Werten hinzufügen, die auf Symbolen basieren

Add class from html

<div ng-repeat="i in test"> 
    <span class="test"> {{getValue(i)}} </span> 
</div> 

Ich mag würde wissen, ob es eine Möglichkeit ist wherin die Vorzeichen (+/-) aus dem HTML identifiziert werden und sie in der HTML lösen sich ..

+0

Könnten Sie einige JS auf der Website hinzufügen, um dies zu tun? – clement

Antwort

2

Sie ng-class wie folgt wie folgt hinzufügen verwenden sollte:

// JS 
$scope.isPositive = function(value) { 
    return value.indexOf('-') == -1; 
} 

Und

// HTML 
<style>.green { color: green; } .red { color: red; }</style> 
<!-- ... --> 
<span ng-class="isPositive(i) ? 'green' : 'red'"> {{getValue(i)}} </span> 

Working Plunker

EDIT

Zur Verwendung der Funktion tun, um die Check-in-Markup zu vermeiden direkt:

<span ng-class="i.indexOf('-') == -1 ? 'green' : 'red'"> {{getValue(i)}} </span> 

Updated plunker

+0

Gibt es eine Möglichkeit, dass ich nur HTML-Code und keinen Controller-Code verwenden kann. Weil das Aufrufen einer Funktion aus HTML die Leistung beeinflusst – forgottofly

+1

Ich habe Änderungen hinzugefügt, um es in HTML zu behandeln. Wenn Sie mich auffrischen möchten, warten Sie bitte morgen, ich habe den maximalen Ruf pro Tag verdient. Natürlich können Sie es jetzt akzeptieren, wenn Sie möchten. – chalasr

+0

Dank chalasr..bewerten Sie Ihre Antwort – forgottofly

0

hinzufügen nur eine bedingte in JS:

if($("span").text().indexOf('+') != -1) { 
    $("span").addClass("positiveClass"); 
} 

es in Aktion auf jsfiddle

+0

Warum verwenden Sie jQuery anstelle von angularJS (auf dem die Frage basiert)? Ich benutze es so wenig wie möglich in meinen eckigen Projekten, um ein Maximum an Code in der primären Technologie meiner Anwendung zu halten (wie möglich). Darüber hinaus stellt das integrierte jQlite ('angular.element') alle grundlegenden jQuery-Funktionen zur Verfügung, einschließlich derjenigen, die Sie in Ihrer Antwort verwendet haben. – chalasr

+0

Ich sah die eckigen Dinge auf der Frage nicht, weder Plunker, aber du hast Recht. – clement

1

Sie können in Winkel

ng-class="{'test': getValue(i) < 0}" 

<span ng-class="{'test': getValue(i) < 0}"> {{getValue(i)}} </span>