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.
};