Я пытаюсь добавить класс к элементу, если значение находится в массиве в пределах области действия, но, похоже, оно не работает.
Вот мой код:
$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>
Спасибо за вашу помощь.
Проблема в том, что вы используете $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.
$indexOf
, вероятно, не является функцией.