我有一个带有ng-repeat属性的表,用于填充来自WS的数据,我隐藏了最后一条记录,因为我不需要它使用ng-hide =" $ last"。现在有一个WS的更新,我需要隐藏最后2条记录,但我不知道如何做到这一点。
我有类似的东西。
<table>
<tr ng-repeat="d in exportData.result" ng-hide="$last">
...code....
</tr>
</table>
对此有任何帮助。
答案 0 :(得分:5)
替换
d in exportData.result
要:
d in (exportData.result.slice(0, exportData.result.length-2))
另一种方法是在你的控制器中做同样的事情。
答案 1 :(得分:2)
我会调用ng-repeat
:
<table>
<tr ng-repeat="d in getTruncatedArray()">
...code....
</tr>
</table>
在你的控制器中:
$scope.getTruncatedArray = function() {
return exportData.result.slice(0, exportData.result.length - 2));
}
我建议您调用方法,而不是直接在HTML中编写“过滤器”。调用方法将保持HTML清洁,并使您的“过滤器”易于更新/修改。
答案 2 :(得分:2)
为什么不在ngRepeat上使用Angular的limitTo
过滤器?
<tr ng-repeat="d in exportData.result | limitTo:quantity">
然后在您的控制器中更新数量以反映您的新期望值
$scope.quantity = $scope.exportData.result.length - 2;
答案 3 :(得分:1)
另一种肮脏的方式:)
<tr ng-repeat="d in exportData.result track by $index" ng-show="$index < exportData.result.length -2">
...code....
</tr>
不要忘记ng-show / hide创建dom元素,它只播放css可见性,过滤你的数组@nashter建议避免这种行为。
答案 4 :(得分:1)
<div ng-controller="MyCtrl">
<div ng-repeat="line in lines">
<div class="preview" ng-hide="((lines.length-2)==$index)||($index==$last)">{{$index}} </div>
</div>