2016-11-19 1 views
0

So habe ich dieses Stück Code in meiner angularjs App, die ich in eine Tabelle aufnehmen. Ich möchte die Klasse 'selten' aktivieren, wenn der Index nur 0, 1 oder 2 ist. Der Index ist die Zeilen. Nehmen wir an, ich habe 8 Zeilen in meinem Tisch. Nur die ersten 3 sollten die Klasse 'selten' haben.mehrfache wenn Prüfungen in ng-Klasse

ng-class="{rare : $index === 0, rare : $index === 1, rare : $index === 2}"

Aber ist es ein einfacherer/kürzerer Weg, es zu schreiben? Ist das eine gute Praxis? Ich denke nicht, dass es sehr gut aussieht, obwohl es funktioniert. Wie würden Sie die if-Checks schreiben?

Ich habe versucht:

ng-class="{rare : $index === {0,1,2}} aber nicht

+0

Hey @rick astley - überprüfen Sie meine Antwort aus - auch wenn Sie eine andere Antwort akzeptiert haben - mir ist ein sehr einfach ein Linienlösung für Sie. – gavgrif

Antwort

0

funktioniert hat Sie so etwas tun könnte, wenn Sie eine Liste von Werten haben.

var app = angular.module("sampleApp", []); 
 

 
app.controller("sampleController", ["$scope", 
 
    function($scope) { 
 
    $scope.data = "Test"; 
 
    $scope.rareList = [1, 2, 3]; 
 
    $scope.val1 = 2; 
 
    $scope.val2 = 5; 
 
    } 
 
]);
.active { 
 
    color: red; 
 
} 
 
.not-active { 
 
    color: blue; 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script> 
 
<div ng-app="sampleApp"> 
 
    <div ng-controller="sampleController"> 
 
    <div ng-class="rareList.includes(val1)? 'active' : 'not-active'">{{data}}</div> 
 
    <div ng-class="rareList.includes(val2)? 'active' : 'not-active'">{{data}}</div> 
 
    </div> 
 
</div>

+0

Die Sache ist, ich möchte es auf 1 Zeile schreiben. Mein Code funktioniert, aber ich möchte ihn nur verkürzen. Wenn ich Ihren Code verwende, müsste ich noch 3 Überprüfungen durchführen. Ich frage mich nur, ob es einen Weg gibt, um zu überprüfen, ob der Index 0, 1 oder 2 ein bisschen schöner ist. Ich habe da vielleicht einen Weg, eine Reihe von Werten in "includes" zu übergeben? Wenn ja, dann wäre dein Code erstaunlich –

+0

Ohhhh ...... jetzt verstehe ich deinen Code. Also würde ich schreiben: '[1,2,3] .includes (index)? 'selten': '' richtig? –

+0

Ja .. einfach nach dem Wertindex suchen. und zuweisen – Sreekanth

0

Bin ich hier etwas fehlt - wenn $ Index der Zeilenindex ist - es ist immer bei 0 und dann erhöhen beginnen. Daher können Sie das untere Limit ignorieren und einfach testen, ob der Index kleiner als der obere Grenzwert ist (beachten Sie, dass $ index null indiziert wird (außer Sie setzen ihn explizit auf 1). Testen Sie daher, ob $ index kleiner als drei ist erlauben Sie, Zeilenindex 0, 1 und 2 zu wählen).

ng-class="{rare: $index < 3}" 

var app = angular.module("sampleApp", []); 
 

 
    app.controller("sampleController", ["$scope", 
 
     function($scope) { 
 
     $scope.data = ['test1','test2','test3','test4']; 
 
     } 
 
    ]);
.rare { 
 
    color: red; 
 
    }
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script> 
 
    <div ng-app="sampleApp"> 
 
     <div ng-controller="sampleController"> 
 
     <div ng-class="{rare: $index < 3}" ng-repeat="datum in data">{{datum}} ($index = {{$index}})</div> 
 

 
     </div> 
 
    </div>

0

Verwendung:

ng-class="{rare : [0,1,2].indexOf($index) >= 0}}