Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在angular.js中获取复选框值_Javascript_Html_Angularjs - Fatal编程技术网

Javascript 如何在angular.js中获取复选框值

Javascript 如何在angular.js中获取复选框值,javascript,html,angularjs,Javascript,Html,Angularjs,我一直在这里寻找线索,但没有真正找到答案 当用户将复选框签入时,我试图获取它们的值。我有点像 <div class="checkbox"> <div class="checkbox" ng-repeat="product in products"> <input type="checkbox" ng-model="product"/> {{product.name}} </div> <button ng-click='add()'

我一直在这里寻找线索,但没有真正找到答案

当用户将复选框签入时,我试图获取它们的值。我有点像

<div class="checkbox">

<div class="checkbox" ng-repeat="product in products">
    <input type="checkbox" ng-model="product"/> {{product.name}}
</div>

<button ng-click='add()'></button>

我该怎么做?谢谢

可以在这里看到角度解:

它基本上是在ng change上发送事件

<div class="checkbox" ng-repeat="product in products">
    <input type="checkbox" ng-model="product.selected" ng-change="add(product)"/> {{product.name}}<br>
</div>
因此,您有一个具有名称和选定状态的产品对象列表,您使用复选框将选定状态保留在该列表中,当您标记/取消标记它时,会触发ng更改事件,并将其传递给产品范围中的add函数,然后检查所选_products数组上的product.name索引,如果它不在该列表中,您可以添加它,如果它已经存在,请删除它。这样,选定的产品与选定的复选框匹配。

在HTML中使用ng model=“product.selected”

<div class="checkbox" ng-repeat="product in products">
  <label><input type="checkbox" ng-model="product.selected"/> {{product.name}}</label>
</div>
JS使用Array.prototype.filter(如果IE8不是问题)


你是不是特别想问,如何用角度来做这件事?或者只是一个jQuerysolution@ScottSelby我需要角度解。我建议你用这个:@BenLesh谢谢!谢天谢地,IE8完全超出了我的视野。
app.controller('myController', function($scope){
  $scope.products = [
    {'name':'product1', 'selected': false},
    {'name':'product2', 'selected': false},
    {'name':'product4', 'selected': false}
  ];
  $scope.selected_products = [];

  $scope.add = function(prod){
    var index = $scope.selected_products.indexOf(prod.name);
    if(index == -1 && prod.selected){
      $scope.selected_products.push(prod.name);
    } else if (!prod.selected && index != -1){
      $scope.selected_products.splice(index, 1);
    }
  }
})
<div class="checkbox" ng-repeat="product in products">
  <label><input type="checkbox" ng-model="product.selected"/> {{product.name}}</label>
</div>
$scope.add = function(){
  var selectedProducts = [];
  angular.forEach($scope.products, function(product) {
    if(product.selected) selectedProducts.push(product);
  });

  // TODO: do something with selectedProducts here
};
$scope.add = function(){
  var selectedProducts = $scope.products.filter(function(product) {
    return product.selected;
  });

  // TODO: do something with selectedProducts.
};