如何在AngularJS中向表达式添加条件

如何在AngularJS中向表达式添加条件,angularjs,Angularjs,我试着做一些像这样的事情: 您的搜索找到{searchResults.iTotalRecords>0,0}个结果 当然这不管用,但你明白了。如果我的对象是整数,我如何检查该值是否大于零,或者将其设置为0 谢谢。要做到这一点,您只需在$scope上使用一个函数: app.controller('MainCtrl', function($scope) { $scope.foo = function() { return $scope.searchResults.iTotalR

我试着做一些像这样的事情:

您的搜索找到{searchResults.iTotalRecords>0,0}个结果

当然这不管用,但你明白了。如果我的对象是整数,我如何检查该值是否大于零,或者将其设置为0


谢谢。

要做到这一点,您只需在$scope上使用一个函数:

app.controller('MainCtrl', function($scope) {
    $scope.foo = function() {
        return $scope.searchResults.iTotalRecords > 0 ? $scope.searchResults.iTotalRecords : 0;
    };
});
在您的标记中:

<span>{{foo()}}</span>
{{foo()}
编辑:100%标记方式

<span ng-show="searchResults.iTotalRecords > 0">{{searchResults.iTotalRecords}}</span>
<span ng-show="searchResults.iTotalRecords <= 0">0</span>
{{searchResults.iTotalRecords}
0

您可能还需要检查和查看更高级的情况,如此。

如果您只想更改数据的表示,而不更改应用程序中的基础(真实)数据,则自定义角度过滤器非常适合此用途

下面是针对您的用例的示例过滤器。您可以在过滤器中放入任何其他逻辑

HTML:

<p>Your search found {{searchResults.iTotalRecords | resultCountFilter}} results.</p>
angular.module('app', []).filter('resultCountFilter', function () {
    return function (resultCount) {
        return resultCount > 0 ? resultCount : 0;          
    };
});​
下面是一个JSFIDLE:


AngularJS过滤器上的文档:

谢谢Blesh,但如果可能的话,我正在尝试在标记中实现它。有办法吗?抱歉,布莱什,但这不起作用。最终使用了Aleross建议的过滤器。无论如何谢谢你!这本应该奏效的。你有一把小提琴坏了吗?(我并不特别关心你所要求的要点,我更感兴趣的是正确性)我认为你所要求的。我觉得过滤器的答案(虽然有效)有点做作。谢谢Aleross,但我尽量避免为此专门编写控制器,因为我认为它应该由表示层处理。最终使用过滤器,效果很好,谢谢Aleross!