Ответ 1
Вы можете выполнить это с помощью немного другого синтаксиса:
ng-class="{'approved': selectedForApproval.indexOf(jobSet) === -1}"
Я пытаюсь добавить класс к элементу, если jobSet
не был выбран для утверждения с использованием выражений.
<li class="approvalUnit" ng-repeat="jobSet in dashboard.currentWork" ng-class="{-1:'approved'}[selectedForApproval.indexOf(jobSet)]">
Это не совсем дурацкий метод доказательства. Любые предложения о том, как я должен это делать?
Вы можете выполнить это с помощью немного другого синтаксиса:
ng-class="{'approved': selectedForApproval.indexOf(jobSet) === -1}"
Вы не должны перегружать шаблоны сложной логикой, это плохая практика. Помните, что всегда имейте это в виду!
Лучшим подходом было бы извлечение этой логики в функцию многократного использования на $rootScope
:
.run(function ($rootScope) {
$rootScope.inArray = function (item, array) {
return (-1 !== array.indexOf(item));
};
})
Затем используйте его в шаблоне:
<li ng-class="{approved: inArray(jobSet, selectedForApproval)}"></li>
Думаю, все согласятся, что этот пример намного читабельнее и удобен в обслуживании.
Где-то в вашей инициализации поставьте этот код.
Array.prototype.contains = function contains(obj) {
for (var i = 0; i < this.length; i++) {
if (this[i] === obj) {
return true;
}
}
return false;
};
Затем вы можете использовать его следующим образом:
<li ng-class="{approved: selectedForApproval.contains(jobSet)}"></li>