60 votes

utiliser ng-repeat et ng-class sur des lignes à l'intérieur d'une table

Je suis en utilisant AngularJS et de l'effet que je veux obtenir serait quelque chose de similaire à ce que ce serait de produire, en supposant qu'il serait de travailler (il n'est pas).

Vue

<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>

Contrôleur

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

Je me rends compte que ce code ne fonctionne pas car person n'est pas disponible à l' ng-class qu'il ne sera disponible que pour les objets à l'intérieur de chaque ligne. Le code est pour avoir une idée de ce que je suis en train de faire à travers: l'ie. Je veux être en mesure d'avoir des lignes de la table qui sont créés à l'aide de ng-repeat dont la classe est également basé sur une condition qui dépend de l'accès à l'étendue de la fonctionnalité de la ligne elle-même, par exemple. person. Je me rends compte que je pourrais juste ajouter ng-classe sur les colonnes, mais c'est ennuyeux. N'importe qui ont des idées?

66voto

jncraton Points 3858

Cela devrait effectivement bien fonctionner. Personne doit être disponible sur l'élément tr, ainsi que sur ses enfants, car ils partagent le même champ d'application.

Cela semble bien fonctionner pour moi:

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

http://jsfiddle.net/xEyJZ/

8voto

Jason Aden Points 1299

En fait, vous pouvez utiliser "personne" dans le contexte, il se réfère. Il existe sur le point d'être répétées ainsi que tous les éléments. La raison en est que toutes les directives sur un élément particulier de partager le même $objet de l'étendue. ng-repeat a une Priorité de 1000, il a déjà créé son $champ d'application et de mettre "personne" dans le il, donc "personne" est disponible à ng-classe.

Voir ce Plnkr:

http://plnkr.co/edit/ZI5Pv24U01S9dNoDulh6

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X