【发布时间】:2016-12-03 01:35:04
【问题描述】:
我正在使用复选框列表,并且我有下一个逻辑行为:
- 如果选中所有项目,则选中“全选”复选框
- 如果未选中所有选定项目之一,则复选框“全选”也未选中
这个逻辑很清楚。取决于检查的项目,我将其 id 提取到一个附加数组,然后使用该数组请求获取数据。
对于推动一切正常,但对于切片逻辑很奇怪。所以我可以对数组进行切片,直到第一个项目被选中,但是我取消选中第一个项目,推送和切片项目不再与复选框相关。
我已经用它复制了plunker,所以如果有人能帮助我找到我所缺少的东西,我将不胜感激。
$scope.modelClass = {
selectedAll: false
};
$scope.selectAllClass = function (array) {
angular.forEach(array, function (item) {
item.selected = $scope.modelClass.selectedAll;
$scope.param =''
});
};
$scope.checkIfAllClassSelected = function (array) {
$scope.modelClass.selectedAll = array.every(function (item) {
return item.selected == true
});
$scope.checked = array.filter(function (item) {
return item.selected == true
}).length;
angular.forEach(array, function (obj) {
if(obj.selected == true){
requestClass(obj)
}
});
};
var selectedClass = [];
var requestClass = function (obj) {
selectedClass.push(obj);
angular.forEach(selectedClass, function (val) {
if (val.selected != true) {
selectedClass.splice(selectedClass.indexOf(val.id), 1);
}
else {
selectedClass = selectedClass.filter(function (elem, index, self) {
return index == self.indexOf(elem);
})
}
});
$scope.param = _.map(selectedClass, 'id')
};
$scope.classes = [
{"id":4,"name":"Achievement","selected":false},
{"id":13,"name":"Information","selected":false},
{"id":6,"name":"Issue","selected":false},
{"id":5,"name":"Message","selected":false},
{"id":9,"name":"Request","selected":false}
]
【问题讨论】:
-
这部分不清楚:“取决于检查的项目,我将其 id 提取到一个附加数组,然后使用该数组请求获取数据”。
-
@user44 所以每个项目都有一个唯一的 id,如果我检查了 id = 4 的项目,我将把这个 id 推送到数组,如果我取消选中 id = 4 的项目,我正在切片数组中的id
标签: javascript angularjs arrays checkbox