2014-09-29 149 views
-1

如何将数组的最大长度设置为只有11个?这是否需要在LimitTo视图中完成?还是我需要向控制器声明另一个变量?极限数组长度Angular.js

 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> 
+1

addBowlPoints如何被调用?那么关于一些验证呢?如果它通过一个按钮,然后要么禁用按钮,要么显示一个警告,如果bowlPoints已经是11. – sma 2014-09-29 15:18:48

+0

感谢您的警报的想法,我可以将此与以下解决方案集成 – imnew123 2014-09-29 15:29:12

回答

1

虽然“limitTo”将在可能情况下工作,另一路在控制器做这将是加分前阵成立一个if语句:

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

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

});

+0

诚然,我只是举一个例子,因为没有太多有关实际使用案例的信息。 – Rorschach120 2014-09-29 15:32:34

1

您可以使用limitTo但在使用track bylimitTo,你需要确保你跟踪有限行,不是所有的人。否则,您最终将显示所有结果,而不仅限于有限的计数。因此,通过对端移动轨迹:

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

但是,但是这并没有设置你的源阵列限制在一个特定的长度,而是将只显示有限的数量。

如果您主要关注的是限制原始数组本身,只是在UI禁用加载功能,从而使addBowlPoints不再被称为(假设这是从用户界面完成),当尺寸已经达到极限。