有数千种方法可以剥这只猫的皮。我知道您是在专门询问 {{}} 之间的问题,但对于来到这里的其他人,我认为值得展示其他一些选项。
$scope 上的函数(IMO,在大多数情况下,这是你最好的选择):
app.controller('MyCtrl', function($scope) {
$scope.foo = 1;
$scope.showSomething = function(input) {
return input == 1 ? 'Foo' : 'Bar';
};
});
<span>{{showSomething(foo)}}</span>
当然是ng-show和ng-hide:
<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>
Bertrand 建议的自定义过滤器。 (如果您必须一遍又一遍地做同样的事情,这是您的最佳选择)
app.filter('myFilter', function() {
return function(input) {
return input == 1 ? 'Foo' : 'Bar';
}
}
{{foo | myFilter}}
或者自定义指令:
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>
就我个人而言,在大多数情况下,我会在我的范围内使用一个函数,它可以使标记保持干净,并且实现起来又快又容易。除非,也就是说,你将一遍又一遍地做同样的事情,在这种情况下,我会按照 Bertrand 的建议,根据具体情况创建一个过滤器或可能的指令。
与往常一样,最重要的是您的解决方案易于维护,并且希望是可测试的。这将完全取决于您的具体情况。