AngularJS:如何在选择指定数量后禁用复选框?

时间:2014-05-26 17:55:00

标签: angularjs angularjs-directive angularjs-scope angularjs-ng-repeat

我在循环中有复选框,如下所示:

 <li ng-repeat="item in items">
      <h2>  {{item.better}}</h2>
      <span>{{item.startTime}}</span>
      <b>   {{item.lengthTime}}</b>
      <input type="checkbox" checklist-model="item.winner" checklist-value="item">
 </li>

我想设置限制,以便用户只能选择最多50个复选框,而不能超过(列表中的总项目数,即100或200等)。

我们如何使用角度js实现这一目标?

非常感谢帮助。

谢谢。

2 个答案:

答案 0 :(得分:15)

FIDDLE

$scope.checkChanged = function(item){
    if(item.winner) $scope.checked++;
    else $scope.checked--;
}

 <input type="checkbox" ng-model="item.winner" ng-change="checkChanged(item)" ng-disabled="checked==limit && !item.winner"/>

通过ng-change跟踪检查,如果达到限制并且未选中复选框,则禁用它们。

不使用$ watch,因为可能会有~200个复选框。

编辑:抱歉忘了点击小提琴上的更新,现在应该可以了。另请注意,使用$scope.limit = 4;

将限制设置为4

答案 1 :(得分:1)

您可以询问商品数量并使用ng-disabled

<input type="checkbox" ng-disabled="!item.value && items.length > 50" />

更新

如评论中所述,答案不正确。但我认为你(和其他人回答)正确的想法如何实现你所需要的。我认为,您需要的信息是使用ng-disabled

我最喜欢Aperçu回答:)