2016-02-11 16 views
5

Chciałem dodać klasę dynamicznie, jeśli liczba całkowita jest dodatnia lub ujemna .. Próbowałem przez wywołanie funkcji z HTML, ale to nie wydaje się być właściwą drogą. Poniżej jest moje plunker ..Dodaj klasę dynamicznie do wartości na podstawie symboli

Add class from html

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

chciałbym wiedzieć, czy istnieje jakikolwiek sposób Wherin znaki (+/-) można zidentyfikować z HTML i rozwiązać je w samym HTML ..

+0

mógłbyś dodać JS na stronie internetowej, aby to zrobić? – clement

Odpowiedz

2

Należy użyć ng-class jak następuje:

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

And

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

Working Plunker

EDIT

Aby uniknąć korzystania z funkcji, należy sprawdzić w znacznikach bezpośrednio:

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

Updated plunker

+0

Czy istnieje sposób, że mogę używać tylko kodu HTML, a nie żadnego kodu kontrolera. Ponieważ wywoływanie funkcji z HTML wpływa na wydajność – forgottofly

+1

Dodałem zmiany, aby obsłużyć to w html. Jeśli chcesz mnie upomnieć, poczekaj jutro, uzyskałem maksymalną reputację dziennie. Oczywiście możesz to teraz zaakceptować, jeśli chcesz. – chalasr

+0

Dzięki chalasr..aprecyzuj swoją odpowiedź – forgottofly

0

dodać tylko jeden warunkowy JS:

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

Zobacz go w akcji na jsfiddle

+0

Dlaczego warto używać jQuery zamiast angularJS (na czym opiera się pytanie)? Używam go w projektach kątowych jak najmniej, aby zachować maksymalnie kod w podstawowej technologii mojej aplikacji (jeśli to możliwe). Dodatkowo, zintegrowany jQlite ('angular.element') zapewnia wszystkie podstawowe funkcje jQuery, w tym tę, której użyłeś w swojej odpowiedzi. – chalasr

+0

Nie widziałem kątowych rzeczy na pytanie, ani plunker, ale masz rację. – clement

1

Możesz dodać tak w kątowym

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

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