【发布时间】:2014-11-23 12:03:56
【问题描述】:
我有一个非常奇怪的问题。当$scope.selectedCat == cat.id 时,我必须在适当的<li> 上设置active 类。该列表是使用 ng-repeat 生成的。如果 selectedCat 为 false,则“浏览所有类别”列表项(在 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-class 中的条件得到正确评估,但 ng-class 不会相应地更新类:
<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 评估为假。在最后一行中,未设置 active,而 ng-class 的计算结果为 true。
任何想法为什么它不起作用?这样做的正确 Angular 方式是什么?
【问题讨论】:
标签: javascript angularjs ng-class