Как изменить текст в этом случае, используя ng-if или другое выражение?

Я пытаюсь изменить текст в теге заголовка на основе tag"s direction значение:

<li ng-repeat="t in tags">
    <div class="tag"
         ng-class="{'green-up': t.direction == 'positive',
                    'red-down': t.direction == 'negative',
                    ''        : t.direction == 'stagnant'}"
                    title="Percentage increase"
                    ng-if="">{{t.name}}</div>
</li>

Направление либо positive, negative или же stagnant, который должен соответствовать title="Percentage increase"title="Percentage decrease" или просто title="Percentage"

Какой угловой синтаксис лучше всего использовать в этом случае?

1 ответ

Решение

Почему бы не настроить параметры тега как объект

$scope.tagInfo = {
    positive:{ class:"green-up", title:"Percentage increase" },
    negative:{ class:"red-down", title:"Percentage decrease" }
}

а потом позвони в свой ng-repeat

<div class="tag"
     ng-class="tagInfo[t.direction].class"
     title="{{tagInfo[t.direction].title}}">{{t.name}}</div>

http://jsfiddle.net/rLrh0Lr1/

Если вам абсолютно положительно необходимо использовать условное предложение, а не поиск соответствия, вызовите метод, подобный fe title="{{getTitle(t.direction)}}

$scope.getTitle = function(direction) {
    if (direction==="positive") {
        return "Increase";
    } else if (direction==="negative") {
        return "Decrease";
    }
};

http://jsfiddle.net/p6aysky5/

Я действительно не вижу смысла вообще делать это все же. Все, что он вносит, это делает ваш код более грязным.

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