思路:
一步:在点击复选框时维护变量数组
在js中定义一个数组变量,
给复选框添加点击动作,
在动作中判断当前复选框是否为选中状态(即点击后复选框的是否选中状态),
若为选中状态,则向数组中添加选中的id,
若为未选中状态,则从数组中删除id元素。
二步:在点击删除时,提交变量数组
前端代码:brand.html
<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>品牌管理</title><metacontent="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"name="viewport"><link rel="stylesheet" href="../plugins/bootstrap/css/bootstrap.min.css"><link rel="stylesheet" href="../plugins/adminLTE/css/AdminLTE.css"><link rel="stylesheet"href="../plugins/adminLTE/css/skins/_all-skins.min.css"><link rel="stylesheet" href="../css/style.css"><script src="../plugins/jQuery/jquery-2.2.3.min.js"></script><script src="../plugins/bootstrap/js/bootstrap.min.js"></script><!-- 引入angularJS --><script src="../plugins/angularjs/angular.min.js"></script><!-- 分页插件使用 --><script src="../plugins/angularjs/pagination.js"></script><link rel="stylesheet" href="../plugins/angularjs/pagination.css"><script type="text/javascript">var app = angular.module("pingyougou", [ "pagination" ]);app.controller("brandController", function($scope, $http) {//分页查询品牌列表//【其实在分页插件内部就有当页面一加载就执行一遍请求的方法调用,所以我们在这块代码中不用再显示的写一遍$scope.reloadList()】//分页控件配置 /* currentPage: 当前页totalItems: 总记录数itemsPerPage: 每页记录数perPageOptions: [10, 20, 30, 40, 50], 分页选项【就是每页显示几条记录的备选下拉】onChange: 当页面变更后自动触发的方法*/$scope.paginationConf = {currentPage : 1,totalItems : 10,itemsPerPage : 10,perPageOptions : [ 10, 20, 30, 40, 50 ],onChange : function() {$scope.reloadList();//重新加载 }};//刷新列表【因为要频繁使用,避免写很长代码,这里封装成一个方法】 $scope.reloadList = function() {//调用分页请求方法 $scope.findPage($scope.paginationConf.currentPage,$scope.paginationConf.itemsPerPage);}//分页请求方法 $scope.findPage = function(page, size) {$http.get("../brand/findPage.do?page=" + page + "&size=" + size).success(function(response) {$scope.list = response.rows; //显示当前页数据 $scope.paginationConf.totalItems = response.total;//更新总记录数});}//新增方法(为了新增和修改都用同一个方法,将此方法改名为save) $scope.save = function(){ //entity是我们在$scope中自定义的一个ang变量//默认是新增var methodName="add";//不为空说明是修改if($scope.entity.id != null){methodName="update";}$http.post("../brand/"+methodName+".do?",$scope.entity).success(function(response){if(response.success){$scope.reloadList();//刷新 }else{alert(response.message);}});}//查询实体 $scope.findOne=function(id){$http.get("../brand/findOne.do?id="+id).success(function(response){//利用ang的双向绑定特性,实现前台取值的更新 $scope.entity = response;});}//用户勾选复选框 注意这段代码,通用的批量勾选处理思路$scope.selectIds=[]; //定义一个用户勾选的id集合//定义一个向集合中添加、删除元素的方法 $scope.updateSelection=function($event,id){//$event.target代表当前input框的js对象,如果当前input是checkbox则其有checked属性if($event.target.checked){//如果点击完是选中状态则添加到集合$scope.selectIds.push(id); //向集合中添加元素 }else{//点击 完是未选中状态则从集中中删除当前元素var index = $scope.selectIds.indexOf(id);//查找值的位置$scope.selectIds.splice(index,1);//参数1:移除的位置 参数2:移除的个数 }}//删除品牌方法 $scope.dele=function(){$http.get("../brand/delete.do?ids="+$scope.selectIds).success(function(response){if(response.success){//刷新列表 $scope.reloadList();}} );}});</script></head><body class="hold-transition skin-red sidebar-mini" ng-app="pingyougou"ng-controller="brandController"><!-- .box-body --><div class="box-header with-border"><h3 class="box-title">品牌管理</h3></div><div class="box-body"><!-- 数据表格 --><div class="table-box"><!--工具栏--><div class="pull-left"><div class="form-group form-inline"><div class="btn-group"><!-- ng-click="entity={}" 用于清空上次数据使每次点新建打开的都是干净的表单;因为逻辑简单所以不用封装方法,若逻辑复杂可以封装方法--><button type="button" class="btn btn-default" title="新建"data-toggle="modal" data-target="#editModal" ng-click="entity={}"><i class="fa fa-file-o"></i> 新建</button><button type="button" class="btn btn-default" title="删除" ng-click="dele()"><i class="fa fa-trash-o"></i> 删除</button><button type="button" class="btn btn-default" title="刷新"onclick="window.location.reload();"><i class="fa fa-refresh"></i> 刷新</button></div></div></div><div class="box-tools pull-right"><div class="has-feedback"></div></div><!--工具栏/--><!--数据列表--><table id="dataList"class="table table-bordered table-striped table-hover dataTable"><thead><tr><th class="" style="padding-right: 0px"><input id="selall" type="checkbox" class="icheckbox_square-blue"></th><th class="sorting_asc">品牌ID</th><th class="sorting">品牌名称</th><th class="sorting">品牌首字母</th><th class="text-center">操作</th></tr></thead><tbody><tr ng-repeat="entity in list"><!-- 为了获取当前复选框的状态,需要再加入一个参数 $event代表源,这里指当前input框 --><td><input type="checkbox" ng-click="updateSelection($event,entity.id)"></td><td>{{entity.id}}</td><td>{{entity.name}}</td><td>{{entity.firstChar}}</td><td class="text-center"><!-- ng-click="findOne(entity.id) 注意:方法的参数中直接写ang变量及其属性即可不用加任何大括号 --><button type="button" class="btn bg-olive btn-xs"data-toggle="modal" data-target="#editModal" ng-click="findOne(entity.id)">修改</button></td></tr></tbody></table><!-- 分页 --><tm-pagination conf="paginationConf"></tm-pagination></div><!-- 方便测试观察,这里打印出数组变量的内容,代码调试时使用 -->{{selectIds}}</div><!-- /.box-body --><!-- 编辑窗口 --><div class="modal fade" id="editModal" tabindex="-1" role="dialog"aria-labelledby="myModalLabel" aria-hidden="true"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal"aria-hidden="true">×</button><h3 id="myModalLabel">品牌编辑</h3></div><div class="modal-body"><table class="table table-bordered table-striped" width="800px"><tr><!-- 只要你在当前文本框中填值,那么它就会自动封装到entity变量中的name属性中,这样entity变量就自动产生了 --><td>品牌名称</td><td><input class="form-control" placeholder="品牌名称" ng-model="entity.name"></td></tr><tr><td>首字母</td><td><input class="form-control" placeholder="首字母" ng-model="entity.firstChar"></td></tr></table></div><div class="modal-footer"><!-- 用ng-click指令绑定点击时执行ang中定义的方法 --><button class="btn btn-success" data-dismiss="modal"aria-hidden="true" ng-click="save()">保存</button><button class="btn btn-default" data-dismiss="modal"aria-hidden="true">关闭</button></div></div></div></div></body></html>
后台Controller:
@RequestMapping("/delete")public Result delete(Long[] ids){try {brandService.delete(ids);return new Result(true, "删除成功");} catch (Exception e) {e.printStackTrace();return new Result(false, "删除失败");}}