Ng-repeat en ng-class gebruiken op rijen in een tabel

Ik gebruik AngularJS en het effect dat ik wil bereiken is vergelijkbaar met wat dit zou opleveren, ervan uitgaande dat het zou werken (wat niet het geval is).

Bekijken

<tr ng-repeat='person in people' ng-class='rowClass(person)'>
  <td>.....info about person...</td>
  <td>.....info about person...</td>
  <td>.....info about person...</td>
</tr>

Controller

$scope.rowClass = function(person){
  ...return some value based upon some property of person...
}

Ik realiseer me dat deze code niet zal werken omdat personniet beschikbaar is voor ng-classomdat deze alleen beschikbaar is voor objecten binnen elke rij. De code is om het idee te krijgen van wat ik probeer over te brengen: dwz. Ik wil tabelrijen kunnen hebben die zijn gemaakt met behulp van ng-repeatwaarvan de klasse ook is gebaseerd op een voorwaarde die afhangt van toegang tot de scoped-functie van de rij zelf, bijvoorbeeld. person. Ik realiseer me dat ik zougewoon ng-class aan de kolommen zou kunnen toevoegen, maar dat is saai. Heeft iemand betere ideeën?


Antwoord 1, autoriteit 100%

Dit zou eigenlijk prima moeten werken. Persoon moet beschikbaar zijn op zowel het tr-element als op de onderliggende items, omdat ze hetzelfde bereik hebben.

Dit lijkt goed te werken voor mij:

<table>
    <tr ng-repeat="person in people" ng-class="rowClass(person)">
        <td>{{ person.name }}</td>
    </tr>
</table>

http://jsfiddle.net/xEyJZ/


Antwoord 2, autoriteit 12%

Eigenlijk magu “persoon” gebruiken in de context waarnaar u verwijst. Het bestaat op het item dat wordt herhaald, evenals op alle items erin. De reden is dat alle richtlijnen voor een bepaald element hetzelfde $scope-object delen. ng-repeat heeft een prioriteit van 1000, dus het heeft zijn $scope al gemaakt en “person” erin geplaatst, daarom is “person” beschikbaar voor ng-class.

Zie deze Plnkr:

http://plnkr.co/edit/ZI5Pv24U01S9dNoDulh6


Antwoord 3

Normaal gesproken geef ik graag een uitgebreider antwoord, maar er komt te veel code bij kijken om dat te doen. Dus zal gewoon laten zien wat het belangrijkste is en ik hoop dat iedereen die dit bekijkt, weet hoe het te gebruiken. Mijn dynamische JSON-array bevat zowel kolommen als rijen, maar het belangrijkste voor dit bit is ng-show=”$last”. Dit zou alleen de laatste rij in de dynamische JSON-array moeten tonen.

<tr ng-repeat="row in table.rows" ng-show="$last">
   <td ng-repeat="column in table.cols" ng-show="column.visible == true" nowrap >{{row[column.columnname]}}</td>
</tr>

Other episodes