Tôi có một vấn đề rất lạ. Tôi phải đặt một lớp học active
trên <li>
thích hợp khi số $scope.selectedCat == cat.id
. Danh sách được tạo bằng ng-repeat. Nếu selectedCat là sai, mục danh sách 'Duyệt Tất cả Danh mục' (bên ngoài ng-lặp lại) được đặt thành hoạt động. setCat()
đặt giá trị của biến $scope.selectedCat
:thay đổi điều kiện ng-class, nhưng không cập nhật các lớp học
<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>
Khi tải trang web, mọi thứ hoạt động tốt (ảnh chụp từ 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}">
Tuy nhiên khi tôi đặt $ scope.selectedClass đến một giá trị cat.id
, các điều kiện trong ng-class được đánh giá đúng, nhưng ng-class sẽ không cập nhật các lớp học cho phù hợp:
<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}">
Xin lưu ý t mũ trong dòng hoạt động đầu tiên vẫn được thiết lập, trong khi ng-class đánh giá sai. Trong dòng cuối cùng hoạt động không được thiết lập, trong khi ng-class đánh giá là true.
Bất kỳ ý tưởng nào tại sao nó không hoạt động? Cách góc chính xác để làm điều này là gì?
Bạn cũng có thể sử dụng một chức năng mà được tên lớp nếu nó là năng động, mà có thể giúp nếu bạn cần các lớp học như: tích cực-1 (và -1 phụ thuộc vào cái gì khác), chỉ cần concat sẽ không làm mới nếu thay đổi "-1" thành "-2". – porfiriopartida