Angularjs:全选复选框

时间:2015-06-17 11:57:26

标签: angularjs

我想实现全选复选框(用于多次删除)。

这是我的View脚本:

<input type="checkbox" name="chk_all" id="chk_all"  ng-click="checkAll(this)" /> Select All
<table>
    <tr ng-repeat="user in allUsers">
    <td><input type="checkbox" ng-model="list" name="list[]" class="chk_all" value="{{user.user_id}}" id="{{user.user_id}}"  ng-checked="checkedAll"  /></td>
    <td>{{user.username}}</td>
    <td>{{user.fname}}</td>
    <td>{{user.lname}}</td>
    <td>{{user.mobile}}</td>
    <td>{{user.email}}</td>
    <td><a title="Edit User" href="#/edit_user/{{user.user_id}}" ><span class="fa fa-pencil"></span></a> | <a title="Delete User"  id=""  style="cursor:pointer;"  ng-click="delete_user(user.user_id)" ><span class="fa fa-trash-o"></span></a></td>
    </tr>
</table>

选中后面的"chk_all"复选框复选框应选中或取消选中。

我想在按钮点击时删除所选用户。所以如何在http post方法上获得选定的用户ID。

脚本编写为:

$scope.testFunction=function(params)
        {
            $http.post("../admin/users/testFunction",{'params' : params}) 
                .success(function (data, status, headers, config) 
                { 
                console.log(data);
                alert(1);
                })

                .error(function(data, status, headers, config){

                });
        }

控制器功能:

public function testFunction()
    {
        $data = json_decode(file_get_contents("php://input"));
        print($data->params);
    }

在testFunction(php函数)中,如何检索选定的用户ID? 有解决方案吗 注意:我用javascript和php完成了它。现在应用程序将转换为Angularjs,因此它应该在angularjs中。

2 个答案:

答案 0 :(得分:1)

你可以给对象'us​​er'一个属性:'checked',然后复选框看起来像:<input type="checkbox" name="list[]" class="chk_all" ng-model="user.checked" onclick="uncheck_select_all(this)" />。然后在提交时,检查allUsers中的每个用户是否user.checked == true,如果是,则将该用户推送到数组。然后将该数组放入您的http帖子中,并为服务器端阵列中的每个用户处理删除。

<强>更新

this plnkr中,我用答案+评论表明我的意思。如果您只是复制粘贴,这不起作用,因为我使用了一些不同的命名。如果你不能用这个捡拾器找出解决方案,我恐怕我尽我所能。注意:您可以使用常规for循环替换angular.forEach循环,以获得稍快的性能。

答案 1 :(得分:0)

Angular Docs中的结帐ng-checked

您可以根据$scope变量为要检查的每个复选框添加表达式。

<input type="checkbox" name="chk_all" id="chk_all"  ng-click="checkAll(this)" />
<input type="checkbox" name="chk_1" id="chk_1"  ng-checked="checkedAll" />
<input type="checkbox" name="chk_2" id="chk_2"  ng-checked="checkedAll" />
<input type="checkbox" name="chk_3" id="chk_3"  ng-checked="checkedAll" />

在你的控制器中你会得到这个:

$scope.checkAll = function() {
    $scope.checkedAll = true;
}

这会将$scope.checkedAll变量设置为true,使ng-checked表达式为true,这将检查使用该表达式的所有复选框。

我也将onchange属性更改为ng-click