AngularJS выражение, если значение находится в массиве

0

Я пытаюсь добавить класс к элементу, если значение находится в массиве в пределах области действия, но, похоже, оно не работает.

Вот мой код:

$scope.weather = [];
$scope.cool = ['Cool'];
$scope.mild = ['Mild'];
$scope.hot = ['Hot'];

$scope.selectWeather = function(weatherType){
    if($.inArray(weatherType, $scope.weather) == -1){
        $scope.weather.push(weatherType);
    }else{
        $scope.weather.splice($.inArray(weatherType, $scope.weather),1);
    }       
}



<a class="cool" ng-click="selectWeather('Cool');" ng-class="{'selected': cool.$indexOf(weather) != -1}">
    Cool
</a>

Спасибо за вашу помощь.

  • 0
    Можете ли вы предоставить демо?
  • 0
    $indexOf , вероятно, не является функцией.
Показать ещё 4 комментария
Теги:

1 ответ

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

Проблема в том, что вы используете $indexOf() внутри своего ng-class, что не является функцией. Просто используйте обычный indexOf в своем шаблоне следующим образом:

<a class="cool" 
   ng-click="selectWeather('Cool')"
   ng-class="{'selected': weather.indexOf('Cool') != -1}">Cool</a>

Функция selectWeather также была не совсем корректной:

$scope.selectWeather = function (weatherType) {
  if ($scope.weather.indexOf(weatherType) == -1) {
    $scope.weather.push(weatherType);
  } else {
    $scope.weather.splice($scope.weather.indexOf(weatherType), 1);
  }       
}

Есть также некоторые другие проблемы с вашим кодом, который я исправил в этом JSFiddle.

Ещё вопросы

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