Angular ng-Repeat与复选框存储选项

时间:2015-12-01 04:25:44

标签: javascript angularjs angularjs-ng-repeat ng-repeat

Angular 1.4

我有一个带有复选框的简单ng-repeat。目标是将customer.Id添加到$scope.holdsChosenCustomerIds中。我需要$scope.holdsChosenCustomerIds像[3,78,445,789]这样的哑数组,基本上无论用户选择什么。

$scope.holdsChosenCustomerIds= [];
 <div ng-repeat="customer in customers">   
     <input type='checkbox' ng-model="holdsChosenCustomerIds[$index]==???" ????????? /> 
 </div>

此时陷入困境

2 个答案:

答案 0 :(得分:1)

只需使用ng-repeat实例作为模型

喜欢这个

 <div ng-repeat="customer in customers">   
     <input type='checkbox' ng-model="customer.isChecked" /> 
 </div>

您可以从$scope.customers

获取已检查项目的信息

如果您需要选中真项

你可以这样尝试

$scope.holdsChosenCustomerIds= $scope.customers.filter(function(x){ return x.isChecked; });

答案 1 :(得分:0)

您可以使用ng-change

在HTML中这样写
<div ng-repeat="customer in customers">   
    <input type='checkbox' ng-model="customer.selected" ng-change="selectUnselect()" /> 
</div>

在你的控制器中:

$scope.selectUnselect = function() {
    var customer = this.customer;
    if (customer.selected) {
         $scope.holdsChosenCustomerIds.push(customer.id);
    } else {
         var idIndex = $scope.holdsChosenCustomerIds.indexOf(customer.id);
         if (idIndex > -1) {
             $scope.holdsChosenCustomerIds.splice(idIndex, 1);
         }
    }
};