Ho un problema molto strano. Devo impostare una classe active
sullo <li>
appropriato quando lo $scope.selectedCat == cat.id
. L'elenco è generato con ng-repeat. Se selectedCat è false, la voce di elenco "Sfoglia tutte le categorie" (al di fuori di ng-repeat) è impostata su attiva. setCat()
imposta il valore della variabile $scope.selectedCat
:modifiche alla condizione di classe ng, ma non aggiornamento classi
<div id="cat-list" ng-controller="CatController">
<li ng-class="{'active': {{selectedCat == false}}}">
<a>
<div class="name" ng-click="setCat(false)" >Browse All Categories</div>
</a>
</li>
<li class="has-subcat" ng-repeat="cat in cats | filter:catsearch" ng-class="{'active': {{selectedCat == cat.id}}}">
<a>
<div cat class="name" ng-click="setCat({{cat.id}})" ng-bind-html="cat.name | highlight:catsearch"></div>
</a>
</li>
</div>
Quando la pagina viene caricata, tutto funziona bene (snapshot da Firebug):
<li ng-class="{'active': true}" class="ng-scope active">
<!-- ngRepeat: cat in cats | filter:catsearch -->
<li class="has-subcat ng-isolate-scope" ng-repeat="cat in cats | filter:catsearch" ng-class="{'active': false}">
Tuttavia quando ho impostato $ scope.selectedClass ad un valore cat.id
, la condizione all'interno ng classe viene valutata in modo corretto, ma ng classe non aggiornerà le classi di conseguenza:
<li ng-class="{'active': false}" class="ng-scope active"> <!--Right here!-->
<!-- ngRepeat: cat in cats | filter:catsearch -->
<li class="has-subcat ng-isolate-scope" ng-repeat="cat in cats | filter:catsearch" ng-class="{'active': true}">
si prega di notare t hat nella prima riga rimane attiva la classe attiva, mentre la classe ng restituisce false. Nell'ultima riga attiva non è impostato, mentre ng-class restituisce true.
Qualche idea sul perché non funziona? Qual è il modo angolare corretto per farlo?
È anche possibile utilizzare una funzione che prende il nome della classe, se è dinamica, che avrebbe aiutato se avete bisogno di classi come: attivo-1 (e -1 dipende qualcos'altro), basta concat non si aggiorna se "-1" diventa "-2". – porfiriopartida