Ввести область действия в ng-классе

Моя проблема проста: я делаю это:

<div class="text-center tag row class_{{infoticket.tags[0]}}">{{infoticket.tags[0]}}</div>
<div ng-repeat="item in ticketcontent track by $index">
    <div style="display: block" 
         class="container row col-md-offset-1 col-md-8" 
         ng-class="{true: 'agent', false: 'collab_infoticket.tags[0]'}
                   [item.author_id == 591119252 || 
                    item.author_id == 619780882 || 
                    item.author_id == 653783901 || 
                    item.author_id == 645192392 || 
                    item.author_id == 513340771 || 
                    item.author_id == 513345171]">
        <div ng-class="mybind"   ng-bind-html="item.html_body"></div>
        <div>{{item.created_at | date}}</div>
        <div ng-switch="item.author_id">
            <div ng-switch-when="591119252">Agent: Mystique</div>
            <div ng-switch-when="619780882">Agent: Batman </div>
            <div ng-switch-when="653783901">Agent: Superman </div>
            <div ng-switch-when="645192392">Agent:Iron Man </div>
            <div ng-switch-when="513340771">Agent:Green Hornet </div>
            <div ng-switch-when="513345171">Agent:Tornade </div>
            <div ng-Switch-Default>Collaborateur: {{myname}}</div>
        </div>
    </div>

Проблема в большинстве случаев мой класс в CSS collab_infoticket.tags[0] не работает, поэтому я хотел бы знать, если это происходит из-за синтаксической проблемы. Что странно в том, что иногда это работает! Однако это class_{{infoticket.tags[0]}}всегда работает.

1 ответ

Решение

Я не уверен, что вы пытаетесь сделать в этом ng-классе правильный синтаксис. Попробуйте вместо этого троичный оператор:

ng-class="(item.author_id == 591119252 || 
           item.author_id == 619780882 || 
           item.author_id == 653783901 || 
           item.author_id == 645192392 || 
           item.author_id == 513340771 || 
           item.author_id == 513345171) 
? 'agent' : collab_infoticket.tags[0]}">

Обратите внимание, что collab_infoticket.tags[0] должен быть без кавычек, если вы хотите, чтобы содержимое этой переменной было задано как имя класса; если он указан в кавычках, вы получите само имя переменной в качестве имени класса.

(Или, что еще лучше, рассчитайте все это внутри директивы или контроллера, это, вероятно, слишком много логики для встраивания в шаблон.)

Другие вопросы по тегам