这里有复选框的数据,
$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;
}
});
}