对ng-repeat

时间:2015-12-01 09:16:18

标签: angularjs ng-repeat

嘿,我怎么只在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,因此(和其他东西)我在指令(控制器)中做的事情并不多。非常感谢任何解决方案。

3 个答案:

答案 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>

那应该有用