Miles de formas de pelar a este gato. Me doy cuenta de que estás preguntando entre {{}} específicamente, pero para otros que vienen aquí, creo que vale la pena mostrar algunas de las otras opciones.
funciona en tu $ scope (IMO, esta es tu mejor apuesta en la mayoría de los escenarios):
app.controller('MyCtrl', function($scope) {
$scope.foo = 1;
$scope.showSomething = function(input) {
return input == 1 ? 'Foo' : 'Bar';
};
});
<span>{{showSomething(foo)}}</span>
ng-show y ng-hide, por supuesto:
<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>
Un filtro personalizado como Bertrand sugirió. (esta es su mejor opción si tiene que hacer lo mismo una y otra vez)
app.filter('myFilter', function() {
return function(input) {
return input == 1 ? 'Foo' : 'Bar';
}
}
{{foo | myFilter}}
O una directiva personalizada:
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>
Personalmente, en la mayoría de los casos, iría con una función en mi alcance, mantiene el marcado bastante limpio, y es rápido y fácil de implementar. A menos que, va a hacer exactamente lo mismo una y otra vez, en cuyo caso iría con la sugerencia de Bertrand y crearía un filtro o posiblemente una directiva, dependiendo de las circunstancias.
Como siempre, lo más importante es que su solución es fácil de mantener y es de esperar que sea comprobable. Y eso va a depender completamente de su situación específica.