Hàng ngàn cách để da mèo này. Tôi nhận ra rằng bạn đang hỏi về {{}} một cách cụ thể, nhưng đối với những người khác đến đây, tôi nghĩ rằng đáng để hiển thị một số tùy chọn khác.
hoạt động trên phạm vi $ của bạn (IMO, đây là đặt cược tốt nhất của bạn trong hầu hết các tình huống):
app.controller('MyCtrl', function($scope) {
$scope.foo = 1;
$scope.showSomething = function(input) {
return input == 1 ? 'Foo' : 'Bar';
};
});
<span>{{showSomething(foo)}}</span>
ng-show và ng-ẩn tất nhiên:
<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>
Một bộ lọc tùy chỉnh như Bertrand đề xuất. (đây là lựa chọn tốt nhất của bạn nếu bạn phải làm điều tương tự lặp đi lặp lại)
app.filter('myFilter', function() {
return function(input) {
return input == 1 ? 'Foo' : 'Bar';
}
}
{{foo | myFilter}}
Hoặc một lệnh tùy chỉnh:
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>
Cá nhân, trong hầu hết các trường hợp tôi sử dụng một chức năng trong phạm vi của mình, nó sẽ giữ cho việc đánh dấu khá sạch sẽ và thực hiện nhanh chóng và dễ dàng. Trừ khi, đó là, bạn sẽ làm điều tương tự lặp đi lặp lại, trong trường hợp đó tôi sẽ đi với đề xuất của Bertrand và tạo một bộ lọc hoặc có thể là một chỉ thị, tùy thuộc vào hoàn cảnh.
Như mọi khi, điều quan trọng nhất là giải pháp của bạn rất dễ bảo trì và hy vọng có thể kiểm tra được. Và điều đó sẽ phụ thuộc hoàn toàn vào tình huống cụ thể của bạn.