У меня очень странная проблема. Я должен установить класс active
в соответствующем <li>
, когда $scope.selectedCat == cat.id
. Список генерируется с помощью ng-repeat. Если selectedCat является ложным, элемент списка "Просмотреть все категории" (за пределами ng-repeat) установлен на активный. setCat()
устанавливает значение переменной $scope.selectedCat
:
<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>
Когда страница загружается, все работает нормально (моментальный снимок из 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}">
Однако, когда я устанавливаю значение $scope.selectedClass в значение cat.id
, условие в классе ng оценивается правильно, но ng-класс не обновляет классы соответственно:
<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}">
Обратите внимание, что в первой строке активный класс остается установленным, а ng-class - false. В последней строке активный не установлен, а ng-class - true.
Любые идеи, почему это не работает? Каков правильный способ Angular сделать это?