Zazwyczaj z Angular wyprowadzasz te przęsła za pomocą dyrektywy ngRepeat i (jak w twoim przypadku) każdy element będzie miał identyfikator. Wiem, że nie jest to prawdą we wszystkich sytuacjach, ale jest typowe, gdy żąda danych z zaplecza - obiekty w tablicy mają zwykle niepowtarzalne identyfikatory.
Możesz użyć tego identyfikatora, aby ułatwić przełączanie klas na pozycje na liście (zobacz kod poniżej lub kod poniżej).
Używanie identyfikatorów obiektów może również wyeliminować niepożądany efekt, gdy indeks $ (opisany w innych odpowiedziach) jest pomieszany z powodu sortowania w Angular.
Przykład Plunkr. http://plnkr.co/edit/na0gUec6cdMABK9L6drV
(w zasadzie zastosować klasę .active zaznaczania jeśli person.id jest równe $ scope.activeClass - którą ustawiony, gdy użytkownik kliknie element
Nadzieja ta pomaga ktoś, Znalazłem wyrażeń w ng klasy być bardzo przydatna!
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;
}
proszę podać przykład. –
pod warunkiem, zapomniałem wgrać. – TheNickyYo
Czy masz na myśli, że usuwa styl ze wszystkich innych elementów? A następnie stosuje styl do siebie? – Rastapopulous