思路:

一步:在点击复选框时维护变量数组

在js中定义一个数组变量,

给复选框添加点击动作,

在动作中判断当前复选框是否为选中状态(即点击后复选框的是否选中状态),

若为选中状态,则向数组中添加选中的id,

若为未选中状态,则从数组中删除id元素。

二步:在点击删除时,提交变量数组

前端代码:brand.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>品牌管理</title>
<meta
content="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, "删除失败");
}
}

angularJS批量删除 品优购删除品牌(通用复选框批量选中删除解决思路)的更多相关文章

  1. angularJS 条件查询 品优购条件查询品牌(条件查询和列表展示公用方法解决思路 及 post请求混合参数提交方式)

    Brand.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l ...

  2. 复选框批量删除操作-jquery方式

    1.首先在页面添加一个批量删除的按钮:<li class="btns"><input id="deleteSubmit" class=&quo ...

  3. dataList中实现用复选框一次删除多行问题

    先遍历每一行,判断checkBox是否选中,再获取选中行的主键Id 删除就行了 ,,,foreach(DatalistRow rowview in Datalist.Rows) //遍历Datalis ...

  4. angularJS修改 品优购修改品牌(新增和修改用同一个方法)

    前端代码 brand.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"&g ...

  5. angularJS新增 品优购新增品牌

    前台代码 brand.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"&g ...

  6. jquery复选框checkbox实现删除

    实现这样一个基本需求,页面有很多数据,可以删除一条或多条,删除前判断是否选中至少一条,否则提示. function deleteUser() { //当时是想把内容以str+="" ...

  7. AngularJS判断checkbox/复选框是否选中并实时显示

    最近做了一个选择标签的功能,把一些标签展示给用户,用户选择自己喜欢的标签,就类似我们在购物网站看到的那种过滤标签似的: 简单的效果如图所示: 首先看一下html代码: 1 <!DOCTYPE h ...

  8. ZH奶酪:AngularJS判断checkbox/复选框是否选中并实时显示

    最近做了一个选择标签的功能,把一些标签展示给用户,用户选择自己喜欢的标签,就类似我们在购物网站看到的那种过滤标签似的: 简单的效果如图所示: 首先看一下html代码: <!DOCTYPE htm ...

  9. (转)AngularJS判断checkbox/复选框是否选中并实时显示

    最近做了一个选择标签的功能,把一些标签展示给用户,用户选择自己喜欢的标签,就类似我们在购物网站看到的那种过滤标签似的: 简单的效果如图所示: 首先看一下html代码: <!DOCTYPE htm ...

随机推荐

  1. 应用UserDefaults储存游戏分数和最高分

    应用UserDefaults储存游戏分数和最高分 我们在GameScene.swift里 private var currentScore:SKLabelNode! // 当前分数节点 private ...

  2. lintcode First Unique Number In Stream

    First Unique Number In Stream 描述: Given a continuous stream of numbers, write a function that return ...

  3. 本地矩阵(Local Matrix)

    本地矩阵具有整型的行.列索引值和双精度浮点型的元素值,它存储在单机上.MLlib支持稠密矩阵DenseMatrix和稀疏矩阵Sparse Matrix两种本地矩阵,稠密矩阵将所有元素的值存储在一个列优 ...

  4. [Clr via C#读书笔记]Cp12泛型

    Cp12泛型 Generic: 特点 源代码保护 类型安全 清晰代码 更佳性能 Framework中的泛型 System.Collections.Generic; 开放类型,封闭类型:每个封闭类型都有 ...

  5. 用 splice 函数分别实现 push、pop、shift、unshift 的方法

    主要需要注意的是不同方法他们本身返回的值应该是什么,是数组当前的长度,还是取出的元素的值,再在splice函数里面进行相应的return就可以了.具体如下: 用 splice函数实现 push方法 f ...

  6. 改maven下创建的动态网站依赖的jre版本

    问题描述 通过maven创建一个动态网站后,eclipse会提示一个提醒 Build path specifies execution environment J2SE-1.5. There are ...

  7. Python基础简介

    一.目前各种语言的应用:java, 可以把特别小的项目做大,并且开源库比较多,C: 用在最底层,例如编写操作系统,运行速率快,开发效率低,C++:常坐游戏引擎Python:AI(人工智能) 简单.明确 ...

  8. Python的top-level脚本为什么在磁盘上没有对应的字节码?

    在Python中,如果你使用python script.py这样的方式运行Python脚本,那么script.py就被称为top-level脚本.对于Python来说,这个脚本的字节码是不会写入到磁盘 ...

  9. c语言中反转字符串的函数strrev(), reverse()

    1.使用string.h中的strrev函数 #include<stdio.h> #include<string.h> int main() { char s[]=" ...

  10. HTTP 请求头 & 响应头

    HTTP请求头概述 HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者POST).如有必要,客户程序还可以选择发送其他的请求头.大多数请求头并不是必需的, 但Co ...