2016-09-17 4 views
1

Hallo, ich habe mit diesem Tag zu meinem CSS-Stil zu ändern, wenn die Bedingung totalAsset und sortedAsset gleich istAngular JS Variable in Scope-Funktion macht Vergleich

<div class="table-row" ng-repeat="x in myData" ng-click="sort()" 
ng-class="{'lightblue': x.totalAsset == sortedAsset}"> 

totalAsset ist meine Daten in so zu sehen und machen

$scope.myData = [ 
{ 
totalAsset: "23557" 
}, 
{ 
totalAsset: "4512190", 
}, 
{ 
totalAsset: "2190", 
}, 
{ 
totalAsset: "1256790", 
} 
] 

ich habe eine Funktion erstellen, die selbst die totalAsset sortieren

$scope.sort = function(){ 
$scope.unsortedAsset = $scope.myData.totalAsset; 
$scope.sortedAsset=$scope.unsortedAsset.split("").sort().join(""); 
} 

in der Logik nur die erste und letzte Reihe wird blau die anderen zwei Reihen bleiben gleich.

Antwort

0

In sort() greifen Sie direkt auf $scope.myData.totalAsset zu. Dies wird als eine Referenz auf das letzte Objekt in $scope.myData gelöst, das ein totalAsset Mitglied hat.

Stattdessen wollten Sie über alle Objekte in myData iterieren. Dies kann erreicht werden, indem ein Parameter an die sort Funktion wie im folgenden Code geliefert wird.

$scope.sort = function (totalAsset){ 
    $scope.unsortedAsset = totalAsset; 
    $scope.sortedAsset=$scope.unsortedAsset.split("").sort().join(""); 
} 

Dann auch müssen Sie die sort Funktion aufrufen, indem Sie den Parameterwert zu liefern.

<div class="table-row" ng-repeat="x in myData" ng-click="sort(x.totalAsset)" ng-class="{'lightblue': x.totalAsset == sortedAsset}"> 
+0

Danke, habe ich noch einen Fehler in meinem Code, das heißt es in meinen Daten viele Ergebnisse sind aber ng-Klick nur ein wahr/falsch geben, wenn ich auf dem bestimmten Elemente klicken. Wie kann ich ng-click verwenden, um einmal auf meinen Tisch zu klicken, um alle zutreffenden Tabellenzeilen anzuzeigen? –

+0

Eigentlich ist das eine ganz andere Frage. Ich schlage vor, dass Sie das als neue SO-Frage stellen. – Jireugi