我有一个看起来像这样的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
的行答案 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;
};
如果我理解你的评论。