2016-08-10 2 views
1

У меня есть элемент span, отображающий некоторое значение. Если значение не 0, я хочу, чтобы применить некоторые styleClass к элементу:Как установить атрибут условно в AngularJS

<span styleClass="alert-error">{{value}}</span> 

В противном случае, если значение равно 0, я не хочу, чтобы применить styleClass. Пустой styleClass атрибут был бы приемлем:

<span styleClass="">{{value}}</span> 

Как я могу сделать это с AngularJS?

+0

Мне интересно, если вы пытаетесь применить атрибут с именем 'styleClass' или вы пытаетесь применить атрибут' class'. –

+0

'styleClass' на самом деле происходит от jsf, и теперь мне больше не нужно, чтобы я пошел на AngularJS. Так что это фактически атрибут класса, который я хочу применить. – user1785730

+0

yup! см. мой обновленный ответ –

ответ

1

Здесь вы идете (только использовать тройной оператор):

<span styleClass="{{value == 0 ? '' : 'alert-error'}}">{{value}}</span> 

Edit:

Для атрибута класса просто к тому же, как и другие уже упоминали:

<span class="{{value == 0 ? '' : 'alert-error'}}">{{value}}</span> 

Кроме того, вы можете использовать ng-class:

0 Использование
1

Попробуйте это ...

Сделать из ng-class

<span ng-class="{{value == 0 ? '' : 'alert-error'}}">{{value}}</span> 
+1

Это хороший способ сделать это! –

+0

Кажется, что чего-то не хватает. Это результирующий код: ' 5'. И стиль НЕ применяется. – user1785730

2

раствора @shashank хорошо.

Я всегда предпочитаю иметь логическую часть в контроллере или обслуживании. Мое решение было бы как

$scope.getStyleCSS = function() { 
    if ($scope.getValue() !== 0) { 
     return 'alert-error'; 
    } 
    return ''; 
} 

$scope.getValue = function() { 
    return $scope.value; 
} 

HTML

<span styleClass="getStyleCSS()" ng-bind="getValue()"></span> 

Предпочтительно использовать ngBind вместо {{выражение}}, если шаблон моментально отображается в браузере в сыром состоянии прежде чем Угловая компиляция. Поскольку ngBind является атрибутом элемента, он делает привязки невидимыми для пользователя во время загрузки страницы.

Смежные вопросы