Javascript 如何在angularjs中正确使用ng repeat内的复选框?

Javascript 如何在angularjs中正确使用ng repeat内的复选框?,javascript,angularjs,checkbox,Javascript,Angularjs,Checkbox,我正在为一个应用程序使用ionic framework和angularjs。我在ng repeat中使用复选框。问题是,如果我选中复选框,它将被添加到数组中。如果我取消选中,它不会从该数组中删除 html代码是 <div class="action-checkbox" ng-repeat="task in alltasks"> <h3>{{task.taskName}}</h3> <ul> <li ng-repeat="sub

我正在为一个应用程序使用ionic framework和angularjs。我在ng repeat中使用复选框。问题是,如果我选中复选框,它将被添加到数组中。如果我取消选中,它不会从该数组中删除

html代码是

<div class="action-checkbox" ng-repeat="task in alltasks">
  <h3>{{task.taskName}}</h3>
  <ul>
    <li ng-repeat="subtask in task.subTasks" ng-click="addList(task,subtask)">
      <input id="{{task._id}}_{{subtask._id}}" name="{{task._id}}_{{subtask._id}}" type="checkbox" value="{{subtask.subTaskName}}" ng-checked="subtask.checked" ng-model="slectedTasks" class="hide"/>
      <label for="{{task._id}}_{{subtask._id}}" > 
        {{subtask.subTaskName}}
      </label>
    </li>
  </ul>
</div>

有人能帮我解决这个问题吗?

添加代码以删除元素

if(subtask.checked == false){
             for(var i = selectedMap.length - 1; i >= 0; i--) {
                  if(selectedMap[i] === data) {
                        selectedMap.splice(i, 1);
                      }
                  }
            }

我终于找到了答案。如果我使用“selectedMap[I]==data”,我将无法拼接阵列,因为它无法正确比较对象。 代码是

if(subtask.checked){
      //selectedMap[task._id,subtask.subTaskName] = data;
     selectedMap.push(data);
     duparray = selectedMap;
     console.log(selectedMap);
    }
    if(!subtask.checked){
      console.log("not checked");
      var sellength = selectedMap.length;
      duparray = selectedMap;
      //console.log(duparray);
             for(var i = sellength - 1; i >= 0; i--) {
                  if(selectedMap[i].subTaskName == data.subTaskName) {
                      console.log(duparray);
                        duparray.splice(i, 1);
                        console.log(duparray);
                      }
                  }
            }

你把你的删除代码放在哪里了?这就是我要做的Anik。如果我给selectedMap.remove(数据),整个数组将被删除
if(subtask.checked){
      //selectedMap[task._id,subtask.subTaskName] = data;
     selectedMap.push(data);
     duparray = selectedMap;
     console.log(selectedMap);
    }
    if(!subtask.checked){
      console.log("not checked");
      var sellength = selectedMap.length;
      duparray = selectedMap;
      //console.log(duparray);
             for(var i = sellength - 1; i >= 0; i--) {
                  if(selectedMap[i].subTaskName == data.subTaskName) {
                      console.log(duparray);
                        duparray.splice(i, 1);
                        console.log(duparray);
                      }
                  }
            }