Des milliers de façons d'écorcher ce chat. Je me rends compte que vous posez des questions spécifiques entre {{}}, mais pour ceux qui viennent ici, je pense que cela vaut la peine de montrer certaines des autres options.
fonction sur votre portée $ (IMO, c'est votre meilleur pari dans la plupart des scénarios):
app.controller('MyCtrl', function($scope) {
$scope.foo = 1;
$scope.showSomething = function(input) {
return input == 1 ? 'Foo' : 'Bar';
};
});
<span>{{showSomething(foo)}}</span>
ng-show et ng-hide bien sûr:
<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 filtre personnalisé comme l'a suggéré Bertrand. (c'est votre meilleur choix si vous devez faire la même chose encore et encore)
app.filter('myFilter', function() {
return function(input) {
return input == 1 ? 'Foo' : 'Bar';
}
}
{{foo | myFilter}}
Ou une directive personnalisée:
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>
Personnellement, dans la plupart des cas, j'irais avec une fonction sur ma portée, cela garde le balisage assez propre et il est rapide et facile à implémenter. À moins que vous ne fassiez la même chose encore et encore, auquel cas j'irais avec la suggestion de Bertrand et créerais un filtre ou éventuellement une directive, selon les circonstances.
Comme toujours, la chose la plus importante est que votre solution est facile à entretenir et peut être testée, espérons-le. Et cela va dépendre complètement de votre situation spécifique.