Наша команда работает в ServiceNow и имеет общий вопрос об использовании ng-class
в сочетании с ng-style
.Мы создали виджет, который является плитками задач и хотим покрасить границы в зависимости от их статуса (т. Е. Зеленый для завершенного, красный для просроченного, желтый для ожидающего, серый для необязательного).
Первоначально мы достигли этого только с помощью ng-class
:
<div class="card" ng-click="task.finished ||c.onWidget(task)"
ng-class="{'finished-border': task.finished,
'overdue-border': !task.finished && task.isOverDue,
'pending-border': !task.finished && !task.isOverDue,
'optional-border': !task.finished && task.isOptional}">
.finished-border {
border: solid 2px $success;
pointer-events: none;
opacity: 0.55;
}
.overdue-border {
border: solid 2px $overdue;
}
.pending-border {
border: solid 2px $due-today;
}
.optional-border {
border: solid 2px $color-light;
}
Однако, чтобы сделать цвета немного более гибкими, ServiceNow позволяет использоватьсхема параметров, где пользователи могут выбирать, какие цвета они хотят дать своим законченным, просроченным, ожидающим и необязательным задачам.Поскольку схемы опций не могут использоваться в CSS, нам было интересно, есть ли способ объединить использование ng-style
с ng-class
.Мы попробовали следующее, но это не сработало:
В нашем клиентском скрипте мы попробовали что-то вроде этого:
c.finished = {
"border" : "solid 2px " + c.options.finished_color,
"pointer-events" : "none",
"opacity" : "0.55"
}
c.overdue = {
"border" : "solid 2px " + c.options.overdue_color
}
c.pending = {
"border" : "solid 2px " + c.options.pending_color
}
c.optional = {
"border" : "solid 2px " + c.options.optional_color
}
<div class="card" ng-click="task.finished ||c.onWidget(task)"
ng-class="{'c.finished': task.finished,
'c.overdue': !task.finished && task.isOverDue,
'c.pending': !task.finished && !task.isOverDue,
'c.optional': !task.finished && task.isOptional}">
Возможно ли это вообще?Есть ли другой способ, которым мы можем сделать это?
Спасибо!