In genere con Angolare si sarebbero in uscita questi intervalli utilizzando la direttiva ngRepeat e (come nel caso) ogni elemento avrebbe un ID. So che questo non è vero per tutte le situazioni, ma è tipico se si richiedono dati da un backend - gli oggetti in una matrice tendono ad avere identificatori univoci.
È possibile utilizzare questo ID per facilitare la commutazione delle classi sugli elementi nell'elenco (vedere plunkr o codice di seguito).
L'utilizzo degli id degli oggetti può anche eliminare l'effetto indesiderato quando l'indice $ (descritto in altre risposte) è incasinato a causa dell'ordinamento in Angolare.
Esempio Plunkr:. http://plnkr.co/edit/na0gUec6cdMABK9L6drV
(a fondo la classe .active-selezione se il person.id è pari a $ scope.activeClass - che abbiamo impostato quando l'utente fa clic su un elemento
Spero che questo aiuta qualcuno, ho trovato espressioni in ng-classe di essere molto utile!
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;
}
offrire un esempio per favore. –
fornito, dimenticato di indentarlo. – TheNickyYo
Vuoi dire che rimuove lo stile da tutti gli altri elementi? E poi applica lo stile a se stesso? – Rastapopulous