Tysiące sposobów na skórowanie tego kota. Zdaję sobie sprawę, że pytasz konkretnie o {{}}, ale dla innych, którzy tu przychodzą, myślę, że warto pokazać inne opcje.
funkcja na $ zakres (IMO, to jest twój najlepszy zakład w większości scenariuszy):
app.controller('MyCtrl', function($scope) {
$scope.foo = 1;
$scope.showSomething = function(input) {
return input == 1 ? 'Foo' : 'Bar';
};
});
<span>{{showSomething(foo)}}</span>
ng-show i ng-hide oczywiście:
<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>
Filtr niestandardowy, jak sugerował Bertrand. (jest to najlepszy wybór, jeśli musisz robić to samo w kółko)
app.filter('myFilter', function() {
return function(input) {
return input == 1 ? 'Foo' : 'Bar';
}
}
{{foo | myFilter}}
Lub niestandardowa dyrektywa:
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>
Osobiście w większości przypadków korzystałbym z funkcji w moim zasięgu, która utrzymuje znaczniki w czystości, a jego wdrożenie jest szybkie i łatwe. Chyba że, to znaczy, będziesz robić to samo od nowa w kółko, w takim przypadku skorzystałbym z sugestii Bertranda i stworzyłbym filtr lub ewentualnie dyrektywę, w zależności od okoliczności.
Jak zawsze najważniejsze jest to, że Twoje rozwiązanie jest łatwe w utrzymaniu i, mam nadzieję, że można je przetestować. A to całkowicie zależy od konkretnej sytuacji.