Имам модел на данни, който идва, по подразбиране давам на първия тикер избран статус на true.
Сега, когато потребител щракне върху друг елемент, трябва ефективно да демаркирам всички останали и да задам избраната стойност на true за щракнатия елемент:
<li class="ticker-li"
ng-repeat="ticker in tickers"
ng-hide="ticker.removed"
ng-class="{'selected':ticker.selected}"
ng-mouseleave="hideTickerOptions()">
<div class="ticker"
ng-click="unselectAll(); ticker.selected = !ticker.selected;
selectTicker(ticker);">
{{ticker.ticker}}
</div>
</li>
Опитах функция forEach
тук, но с грешка [object Array] is not a function
:
var vs = $scope;
vs.unselectAll = function() {
vs.tickers.forEach(vs.tickers, function(ticker) {
ticker.selected = false;
});
};
Обикновеният for-цикъл ще работи, но дали е ефективен начин за превключване на всички избрани стойности на false?
for (var i = 0; i < vs.tickers.length; i++) {
vs.tickers[i].selected = false;
}
Моето мислене тук е да изпълня тази функция unselectAll, за да демаркирам всичко, след това следващия код в маркирането, който избира текущия елемент:
<div class="ticker"
ng-click="unselectAll(); ticker.selected = !ticker.selected;
selectTicker(ticker);">
{{ticker.ticker}}
</div>