如何限制ng-repeat中显示的行?

时间:2016-01-17 15:51:47

标签: angularjs

我有一个看起来像这样的ng-repeat:

 <div ng-repeat="subject in subjects">
    <div>{{ subject.name }}</div>
 </div>

有没有办法可以将行显示限制为subject.id小于50的行,如果是roleId&gt; 1,否则显示所有行?

$ scope.roleId = 0表示没有过滤器 $ scope.roleId&gt; 0表示过滤器仅显示$ scope.subjects中subject.id小于50

的行

3 个答案:

答案 0 :(得分:3)

您可以使用ng-if或使用过滤器

来完成此操作
 <div ng-repeat="subject in subjects" ng-if="subject.id>50">

有关角色ID的部分不清楚

答案 1 :(得分:2)

使用限制过滤

<div ng-repeat="subject in subjects | limitTo:quantity">
    <div>{{ subject.name }}</div>
</div>

然后根据您的业务逻辑在控制器中设置$ scope.quantity。

使用自定义过滤器

要使用自定义过滤器,只需在控制器中设置新的$scope功能。

$scope.yourFilter = function (items) {
    // probably need some more logic but you get the idea
    return items.id < 50;
};

过滤器应该看起来像这样

<div ng-repeat="subject in subjects | filter:yourFilter(subjects)">
    <div>{{ subject.name }}</div>
</div>

答案 2 :(得分:0)

添加过滤器

<div ng-repeat="subject in subjects | filter:filterFn">
    <div>{{ subject.name }}</div>
</div>

在你的控制器中,有这个功能:

$scope.filterFn = function (item) {
    if ($scope.roleId > 1) {
        return (item.Id < 50) ? true : false;
    }
    else
        return true;
};

如果我理解你的评论。