限制数组长度Angular.js

时间:2014-09-29 15:17:04

标签: angularjs

如何将数组最大长度设置为11.这是否需要在LimitTo视图中完成?或者我是否需要向控制器声明另一个变量?

       bowlingApp.controller('bowlPoints', function ($scope){
    $scope.bowlPoints = [];

    $scope.addBowlPoints = function() 
    {
      $scope.bowlPoints.push($scope.enteredPoints);
    };
  });

<td ng-repeat="points in bowlPoints track by $index | limitTo:11">{{points}}</td>

2 个答案:

答案 0 :(得分:1)

您可以使用limitTo,但在track bylimitTo一起使用时,您需要确保跟踪有限的行,而不是所有行。否则,您将最终显示所有结果,而不仅仅是有限的计数。所以追踪到最后:

   <td ng-repeat="points in bowlPoints | limitTo:11 track by $index">{{points}}</td>

但是,这并没有将您的源数组设置为特定长度,而是仅显示有限的数量。

如果您主要关注的是限制原始数组本身,只需禁用UI上的添加功能,以便不再调用addBowlPoints(假设这是从UI完成的),当大小时已达到限制。

答案 1 :(得分:1)

虽然&#39;限制到&#39;可能会在场景中工作,在控制器中执行此操作的另一种方法是在向数组添加点之前设置if语句:

       bowlingApp.controller('bowlPoints', function ($scope){
$scope.bowlPoints = [];

$scope.addBowlPoints = function() {
  if(($scope.bowlPoints.length + $scope.enteredPoints.length) < 12) {
    $scope.bowlPoints.push($scope.enteredPoints);
  }
};

});