我已经创建了一个 Angular 应用程序,用于获取所有检查到数组中的复选框值,没有任何循环,但是在同时检查和取消检查之后,我在数组中得到了错误的数据
<强> Working Demo
任何人都可以给我一些解决方案
var app = angular.module('checkbox', []);
app.controller('homeCtrl', function ($scope) {
$scope.selected = [];
$scope.array_ = angular.copy($scope.array);
$scope.list = [{
"id": 1,
"value": "apple",
"checked": false
}, {
"id": 3,
"value": "orange",
"checked": false
}, {
"id": 5,
"value": "pear",
"checked": false
}];
$scope.checkedOrNot = function (id, isChecked, index) {
if (isChecked) {
$scope.selected.push(id);
} else {
$scope.selected.splice(index, 1);
}
}
});
最佳答案
请参阅此处http://jsfiddle.net/7L6beac6/2/
您需要在选定数组中找到复选框的索引,并使用该索引而不是收割机内复选框的索引将其删除
var app = angular.module('checkbox', []);
app.controller('homeCtrl', function ($scope) {
$scope.selected = [];
$scope.array_ = angular.copy($scope.array);
$scope.list = [{
"id": 1,
"value": "apple",
"checked": false
}, {
"id": 3,
"value": "orange",
"checked": false
}, {
"id": 5,
"value": "pear",
"checked": false
}];
$scope.checkedOrNot = function (id, isChecked, index) {
console.log("index:" + index + " " + isChecked);
if (isChecked) {
$scope.selected.push(id);
} else {
var _index = $scope.selected.indexOf(id);
$scope.selected.splice(_index, 1);
}
};
});
关于javascript - 获取数组中选定的复选框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25202105/