Изменение цвета индикатора загрузки в процентах

Я создал индикатор выполнения с помощью Bootstrap и хочу, чтобы цвет динамически изменялся в зависимости от процента. Пока вот как выглядит мой код:

<div class="progress" style="height: {{c.options.bar_height}}px;">
  <div class="progress-bar progress-bar-striped active {{c.progress_bar_color}}" role="progressbar" aria-valuenow={{c.data.percent_complete}} aria-valuemin="0" aria-valuemax="100" style="width:{{c.data.percent_complete}}; font-size: {{c.options.font_size}};">
      {{c.data.percent_complete}} 
  </div>
</div>

В моем клиентском контроллере я установил цвета следующим образом:

if(c.data.percent_complete<=50) {
    c.progress_bar_color = 'progress-bar-danger';
}  
if(c.data.percent_complete>50 && c.data.percent_complete<=75) {
    c.progress_bar_color = 'progress-bar-warning';  
}  
if(c.data.percent_complete>75 && c.data.percent_complete<=99.99) {
    c.progress_bar_color = 'progress-bar-primary';
}  
if(c.data.percent_complete==100) {
    c.progress_bar_color = 'progress-bar-success';
}

Пока индикатор выполнения не меняет цвет вообще. Чего мне не хватает, чтобы заставить это работать?


РЕДАКТИРОВАТЬ

Я избавился от моего клиентского контроллера и добавил ng-класс:

ng-class="{'progress-bar-danger': c.data.percent_complete<'33', 'progress-bar-warning': c.data.percent_complete>='33' && c.data.percent_complete<'66', 'progress-bar-success': c.data.percent_complete>='66'}"

Это работает для каждого сценария, за исключением случаев, когда он составляет 100%. Когда планка по какой-либо причине достигает 100%, она меняется на "прогресс-бар-опасность" вместо "прогресс-бар-успех". Любые предложения, как это исправить? Спасибо!

2 ответа

Можно попробовать с помощью ng-class="c.progress_bar_color" вместо

Может быть, это работает JSFiddle помогает:)

Я исправил это, используя вместо этого uib-progressbar:

Мой клиентский контроллер:

var value = c.data.percent_complete;
    var type;

    if (value <= c.options.danger_threshold) {
        type = 'danger';
    } else if (value > c.options.danger_threshold && value <= c.options.warning_threshold) {
        type = 'warning';
    } else if (value > c.options.warning_threshold && value <= c.options.primary_threshold) {
        type = 'primary';
    } else {
        type = 'success';
    }

    c.percentage_label = value+'%';
    c.type = type;

Мой пересмотренный HTML:

<uib-progressbar style="height: {{c.options.bar_height}}px;" class="progress-striped active" value="c.data.percent_complete" type="{{c.type}}">
    <div>
      <span style="font-size: {{c.options.font_size}};">{{c.percentage_label}}</span>
      <i ng-if="c.data.empty.length>0" class="fa fa-info-circle info m-l-xs" popover-placement="{{c.dynamicPopover.placement}}" popover-trigger="mouseenter" uib-popover-template="c.dynamicPopover.templateUrl" popover-title="{{c.data.empty.length}} Required Fields Missing"></i>
    </div>
  </uib-progressbar>
Другие вопросы по тегам