Почему не работает ng-класс в ng-repeat?

0

У меня есть ng-repeat:

<div ng-repeat="num in arr" ng-class="selected(num.id) ? 'active' : ''">
   <span>{{num.name}}</span>
</div>

Также selected() метод selected() который проверяет, активен ли элемент:

$scope.selected = function(num){
    angular.forEach($scope.categorySelect, function (value, key) {
        if(value.id == num){
            // Here works console.log()
            return ($scope.categorySelect[key].checked == true) ? false : true;
        }
    })
}

Но для меня это не работает.

Теги:

3 ответа

3
Лучший ответ

Синтаксис для ng-class должен быть следующим:

<div ng-repeat="num in arr" ng-class="{ 'active': selected(num.id) }">

Также ваш $scope.selected() ничего не возвращает. Вы возвращаете логическое значение в своей анонимной функции, которая прерывает forEach.

Измените свою функцию следующим образом

$scope.selected = function (num) {
    var isSelected = false;

    angular.forEach($scope.categorySelect, function (value, key) {
        if(value.id == num){
            isSelected = $scope.categorySelect[key].checked;
            return;
        }
    });

    return isSelected;
}
  • 0
    Тоже не работает
2

Должен быть:

<div ng-repeat="num in arr" ng-class="{'active': selected(num.id) }">
   <span>{{num.name}}</span>
</div>

См. Документацию ngClass

0

Синтаксис ng-класса неверен:

ng-class="{'active' : selected(num.id)}"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню