У меня есть этот массив объектов на моем контроллере (self.years)
var self = this;
self.years =[
{"year":"2010"},
{"year":"2011"},
{"year":"2012"},
{"year":"2013"},
{"year":"2014"},
{"year":"2015"}
];
В моей разметке я использую это для создания кнопки для каждого объекта с помощью ng-repeat:
<div class="btn-container col-md-2" ng-repeat="year in ctrl.years">
<button class='btn year-btn' year="{{$index}}" ng-click="ctrl.updateYear($index)">{{year.year}}</button>
</div>
Если на моем контроллере у меня есть yearSelected уже плюс функция щелчка для каждой кнопки, чтобы изменить этот yearSelected:
self.yearSelected = self.years[5];
self.updateYear = function(indexSelected) {
self.yearSelected = self.years[indexSelected];
};
... как я могу присвоить соответствующую кнопку в год. Выбран "выбранный" класс с использованием ng-класса?
self.updateYear = function(indexSelected) {
self.currentIndex = indexSelected; // add this
self.yearSelected = self.years[indexSelected];
};
В пользовательском интерфейсе добавьте к вашей кнопке ng-class= "{'active': $ index === currentIndex}"
self.yearSelected = self.years[0];
self.updateYear = function(year) {
self.yearSelected = year;
};
<div class="btn-container col-md-2" ng-repeat="obj in ctrl.years">
<button class='btn year-btn' ng-click="ctrl.updateYear(obj)">{{obj.year}}</button>
</div>
//use ng-class="{active: self.yearSelected === obj.year }"
ng-class="{selected: self.yearSelected === year.year }"