在取消复选框后从数组中删除字符串



这里有复选框的数据,

$scope.dataList = {
'ICT': true,
'OTTIX_DT': true,
'CP EMR AD': true,
}
<input type="checkbox" ng-model="miniAddons.dataList[data.jobName]" 
ng-change="pickExtra($event,'miniAddons', chosenMiniAddons, data.jobName);">
$scope.pickExtra = function(evt,JBname,chosenMiniAddons,chosenOptions){

$scope.userSelectedMiniAddon = Object.keys($scope[miniAddons].dataList);
}

我的场景是禁用/启用按钮,所以使用var temp = Object.keys($scope.dataList),让我喜欢['ICT','OTTIX_DT','CP EMR AD'],然后我可以检查数组的.length,基于数组长度,如果length > 0我启用按钮否则禁用

每当我点击复选框时,数组项按预期增加,但不知道如何在取消复选框时删除项。

简单来说,如果所有的false$scope.dataList我需要禁用按钮,我应该启用按钮,如果至少一个键有true值。

当前使用的是纯旧JS,而不是最新的es6在纯旧的js中,如何使用filter和map是很困惑的。

谁来帮帮我。

用问题的当前信息来帮助你有点困难,但我有一种感觉,你的清单没有缩小,因为键没有从你的数组中删除

尝试在Object.keys(yourData)上使用过滤器函数

$scope.dataList = {
'ICT': true,
'OTTIX_DT': true,
'CP EMR AD': true,
}
<input type="checkbox" ng-model="miniAddons.dataList[data.jobName]" 
ng-change="pickExtra($event,'miniAddons', chosenMiniAddons, data.jobName);">
$scope.pickExtra = function(evt,JBname,chosenMiniAddons,chosenOptions){
// Will filter out each option that is false, so the list will be empty if all are uncheked
$scope.userSelectedMiniAddon = Object.keys($scope[miniAddons].dataList).filter((key => {
if($scope[miniAddons].dataList[key]) { // check if the value is true.
return key;
}
});
}

最新更新