Tausende Möglichkeiten, diese Katze zu häuten. Mir ist klar, dass Sie speziell zwischen {{}} fragen, aber für andere, die hierher kommen, lohnt es sich, einige der anderen Optionen aufzuzeigen.
Funktion auf Ihrem $ scope (IMO, dies ist in den meisten Szenarien die beste Wahl):
app.controller('MyCtrl', function($scope) {
$scope.foo = 1;
$scope.showSomething = function(input) {
return input == 1 ? 'Foo' : 'Bar';
};
});
<span>{{showSomething(foo)}}</span>
ng-show und ng-hide natürlich:
<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>
Ein benutzerdefinierter Filter, wie Bertrand vorgeschlagen hat. (Dies ist Ihre beste Wahl, wenn Sie immer wieder das Gleiche tun müssen.)
app.filter('myFilter', function() {
return function(input) {
return input == 1 ? 'Foo' : 'Bar';
}
}
{{foo | myFilter}}
Oder eine benutzerdefinierte Anweisung:
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>
Persönlich würde ich in den meisten Fällen eine Funktion in meinem Bereich verwenden, die das Markup ziemlich sauber hält und schnell und einfach zu implementieren ist. Es sei denn, Sie werden immer und immer wieder genau das Gleiche tun. In diesem Fall würde ich Bertrands Vorschlag folgen und je nach den Umständen einen Filter oder möglicherweise eine Direktive erstellen.
Wie immer ist das Wichtigste, dass Ihre Lösung einfach zu warten und hoffentlich testbar ist. Und das hängt ganz von Ihrer spezifischen Situation ab.