En général, avec Angular, vous produisez ces intervalles à l'aide de la directive ngRepeat et (comme dans votre cas) chaque élément a un identifiant. Je sais que ce n'est pas vrai pour toutes les situations mais c'est typique si vous demandez des données à partir d'un backend - les objets dans un tableau ont tendance à avoir des identifiants uniques.
Vous pouvez utiliser cet identifiant pour faciliter le basculement des classes sur les éléments de votre liste (voir le plunkr ou le code ci-dessous).
L'utilisation des identifiants des objets peut également éliminer l'effet indésirable lorsque le $index (décrit dans d'autres réponses) est perturbé par le tri dans Angular.
Exemple Plunkr : http://plnkr.co/edit/na0gUec6cdMABK9L6drV
(en fait, appliquer la classe .active-selection si person.id est égal à $scope.activeClass - que nous définissons lorsque l'utilisateur clique sur un élément.
J'espère que cela aidera quelqu'un, j'ai trouvé les expressions dans les ng-class très utiles !
HTML
<ul>
<li ng-repeat="person in people"
data-ng-class="{'active-selection': person.id == activeClass}">
<a data-ng-click="selectPerson(person.id)">
{{person.name}}
</a>
</li>
</ul>
JS
app.controller('MainCtrl', function($scope) {
$scope.people = [{
id: "1",
name: "John",
}, {
id: "2",
name: "Lucy"
}, {
id: "3",
name: "Mark"
}, {
id: "4",
name: "Sam"
}];
$scope.selectPerson = function(id) {
$scope.activeClass = id;
console.log(id);
};
});
CSS :
.active-selection {
background-color: #eee;
}