如何使用Checkbox和Angularjs将列表对象发布到API?

时间:2019-03-15 05:06:29

标签: angularjs

我的问题是: 我在带有复选框的表格中有一个列表Student。现在,我想选中此框并将列表Student发送到API。但是我无法得到他们。 我的代码在这里!

HTML:

<tr dir-paginate="student in ClassStudents | filter: search | itemsPerPage: 20">
    <td><input type="checkbox" ng-model="student.selected"></td>
    <td style="display: none;">{{student.Class.ClassId}}</td>
    <td>[Another property]</td>
</tr>

AngularJS:

function selectStudents(){
    var listStudent = [];
    $scope.ClassStudents.forEach(function(student){
    if(student.checked){
        var studentClone = angular.copy(student);
        listStudent.push(studentClone)
        }
    })
    return listStudent;
}
$scope.upGrade = function(){
    $http({
        method: 'POST',
        url: host + "/api/APIClassStudents/Post",
        data: {
            Students: selectStudents(),
            ClassId: 2
        }
    }).then(function(response){
        alert("Upgrade Successful!")
    })
}

可以正常连接到WEB API,响应Upgrade success!,但没有任何变化。当我调试时,我认为selectStudent()[现在是一个数组]是count =0。而且我不知道为什么。 感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

问题是,您正在HTML中使用selected,并在控制器中访问checked。只需在upGrade函数中使用以下过滤器即可代替selectStudents()

data: {
    Students: $scope.ClassStudents.filter(student => student.selected),
    ClassId: 2
}

过滤器功能将返回所有选定的学生。