Тысячи способов снять шкуру с этой кошки. Я понимаю, что вы спрашиваете между {{}} конкретно, но для других, которые приходят сюда, я думаю, что стоит показать некоторые другие варианты.
Функция в вашей области $ (IMO, это ваша лучшая ставка в большинстве сценариев):
app.controller('MyCtrl', function($scope) {
$scope.foo = 1;
$scope.showSomething = function(input) {
return input == 1 ? 'Foo' : 'Bar';
};
});
<span>{{showSomething(foo)}}</span>
нг-шоу и нг-скрыть, конечно:
<span ng-show="foo == 1">Foo</span><span ng-hide="foo == 1">Bar</span>
ngSwitch
<div ng-switch on="foo">
<span ng-switch-when="1">Foo</span>
<span ng-switch-when="2">Bar</span>
<span ng-switch-default>What?</span>
</div>
Пользовательский фильтр, как предложил Бертран. (это ваш лучший выбор, если вам придется делать одно и то же снова и снова)
app.filter('myFilter', function() {
return function(input) {
return input == 1 ? 'Foo' : 'Bar';
}
}
{{foo | myFilter}}
Или пользовательская директива:
app.directive('myDirective', function() {
return {
restrict: 'E',
replace: true,
link: function(scope, elem, attrs) {
scope.$watch(attrs.value, function(v) {
elem.text(v == 1 ? 'Foo': 'Bar');
});
}
};
});
<my-directive value="foo"></my-directive>
Лично в большинстве случаев я бы использовал функцию в своей области видимости, она содержала разметку довольно чисто, и ее легко и быстро реализовать. Если, конечно, вы не будете делать одно и то же точно снова и снова, и в этом случае я бы следовал предложению Бертранда и создавал фильтр или, возможно, директиву, в зависимости от обстоятельств.
Как всегда, самое важное - это то, что ваше решение легко обслуживается и, как мы надеемся, тестируемо. И это будет полностью зависеть от вашей конкретной ситуации.