Migliaia di modi per scuoiare questo gatto. Mi rendo conto che stai chiedendo in particolare tra {{}}, ma per gli altri che vengono qui, penso che valga la pena mostrare alcune delle altre opzioni.
funzione sul tuo $ scope (IMO, questa è la tua scommessa migliore nella maggior parte degli scenari):
app.controller('MyCtrl', function($scope) {
$scope.foo = 1;
$scope.showSomething = function(input) {
return input == 1 ? 'Foo' : 'Bar';
};
});
<span>{{showSomething(foo)}}</span>
ng-show e ng-hide ovviamente:
<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 personalizzato come suggerito da Bertrand. (questa è la scelta migliore se devi fare sempre la stessa cosa)
app.filter('myFilter', function() {
return function(input) {
return input == 1 ? 'Foo' : 'Bar';
}
}
{{foo | myFilter}}
O una direttiva personalizzata:
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, nella maggior parte dei casi andrei con una funzione sul mio ambito, mantiene il markup abbastanza pulito ed è veloce e facile da implementare. A meno che, cioè, continuerai a ripetere sempre la stessa identica cosa, nel qual caso seguirò il suggerimento di Bertrand e creerò un filtro o eventualmente una direttiva, a seconda delle circostanze.
Come sempre, la cosa più importante è che la tua soluzione è facile da mantenere ed è sperabilmente verificabile. E questo dipenderà completamente dalla tua situazione specifica.