嘿,我怎么只在ng-repeat中显示第一个评估为真的数字?
在我的指令(或控制人)中,我有:
ctrl.things = [1,2,3,4,5,6];
并在我的HTML中:
<div ng-repeat='thing in ctrl.things' >
<span ng-if="thing>3" ng-show="$first">{{thing}}</span>
</div>
如何仅显示4个结果?
请注意,此示例已简化。在ng-repeat中实际上有一个ng-repeat,因此(和其他东西)我在指令(控制器)中做的事情并不多。非常感谢任何解决方案。
答案 0 :(得分:2)
声明范围
中的方法$scope.getData=function(obj){
return obj > 3;
}
然后将其添加为div
中的过滤器<div ng-repeat='thing in things | filter : getData' ng-if="$first">
<span >{{thing}}</span>
</div>
的 JSFIDDLE 强>
如果想使用this
试试这个
声明范围
中的方法vm.getData=function(obj){
return obj > 3;
}
然后将其添加为div
中的过滤器 <div ng-repeat='thing in vm.things | filter : vm.getData' ng-if="$first">
<span >{{thing}}</span>
</div>
的 JSFIDDLE 强>
答案 1 :(得分:0)
我认为你正在寻找这个:
//controller
$scope.ctrl={};
$scope.ctrl.things=[{1:false},{2:false},{3:false},{4:true},{5:true}];
$scope.check=function(value){
$scope.count = value === true?($scope.count+1):$scope.count;
return $scope.count ===1 ;
}
//end of controller
HTML
<div ng-repeat='(key,value) in ctrl.things' >
<span ng-if="check(value)">{{key}}</span>
</div>
要显示第一个元素,如果要显示最后一个项目,可以放置ng-if="$last"
答案 2 :(得分:0)
您必须创建一个过滤器或内联它:
<div ng-repeat='thing in ctrl.things' ng-if="thing > 3">
<span ng-if="$first">{{thing}}</span>
</div>
那应该有用