Angularjs+bootstrap+table多选(全选)支持单击行选中实现编辑、删除功能


Posted in Javascript onMarch 27, 2017

最终实现效果:

Angularjs+bootstrap+table多选(全选)支持单击行选中实现编辑、删除功能

index.html

<!DOCTYPE html>
<html>
 <head>
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.js"></script>
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular-animate.js"></script>
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular-sanitize.js"></script>
  <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-2.3.1.js"></script>
  <link href="//netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="external nofollow" rel="stylesheet">
  <link rel="stylesheet" href="style.css" rel="external nofollow" >
  <script src="script.js"></script>
 </head>
 <body ng-app="routerApp">
  <div ng-controller="zdTable">
  <table class="table table-bordered" >
    <thead>
     <tr>
        <th>
          <input type="checkbox" ng-model="selectAll" ng-change="changeAll()" /> 选择</th>
        <th>序号</th>
        <th>用户</th>
        <th>备注</th>
        <th>操作</th>
      </tr>
    </thead>
    <tbody>
      <tr ng-repeat="row in datas" ng-init="outerIndex = $index" ng-click="changeCurrents(row, $event)">
        <td><input type="checkbox" ng-model="row.checked" ng-click="changeCurrent(row, $event)" /></td>
        <td ng-bind="outerIndex+1"></td>
        <td ng-repeat="tddata in row | filterTable">
            {{tddata}}
        </td>
        <td>
           <button type="button" class="btn btn-info" ng-click="zdTableEdit(row, $event)">编辑</button>
           <button type="button" class="btn btn-danger" ng-click="zdTableRemove(row, $event)">删除</button>
        </td>
      </tr>
    </tbody>
  </table>
 <div>已选数量:{{count}}</div>
 <div>已选对象:{{selectData}}</div>
</div>
 </body>
</html>

script.js

// Code goes here
var routerApp = angular.module('routerApp', [ 'ngAnimate', 'ngSanitize', 
                   'ui.bootstrap']);
routerApp.controller('zdTable', [
    '$scope',
    function(scope) {
      console.log('controller');
     //初始化数据
      scope.datas = [
        {name:'admin1', rem:'备注'}, 
        { name:'admin2', rem:'备注'}, 
        { name:'admin3', rem:'备注'}
        ];
      scope.count = 0;//已选择数量 
      scope.selectData = [];//已选对象
      //选择单个(取消选择单个
      scope.changeCurrent = function(current, $event) {
       //计算已选数量 true加, false减
        scope.count += current.checked ? 1 : -1;
        //判断是否全选,选数量等于数据长度为true
    scope.selectAll = scope.count === scope.datas.length;
        //统计已选对象
        scope.selectData = [];
        angular.forEach(scope.datas, function(item) {
          if(item.checked){
            scope.selectData[scope.selectData.length] = item;
          }
        });
       $event.stopPropagation();//阻止冒泡
      };
      //单击行选中
      scope.changeCurrents = function(current, $event) {
        if(current.checked == undefined){
          current.checked = true;
        }else{
          current.checked = !current.checked;
        }
        scope.changeCurrent(current, $event);
      };
    //全选(取消全选
      scope.changeAll = function() {
        //console.log(scope.selectAll);
        angular.forEach(scope.datas, function(item) {
          item.checked = scope.selectAll;
        });
        scope.count = scope.selectAll ? scope.datas.length : 0;
        if (scope.selectAll) {
          scope.selectData = scope.datas;
        } else {
          scope.selectData = [];
        }
      };
      //编辑事件
      scope.zdTableEdit = function(item, $event){
        console.log(item);
        $event.stopPropagation();//阻止冒泡
      };
      //删除事件
      scope.zdTableRemove = function(item, $event){
        console.log(item);
        $event.stopPropagation();//阻止冒泡
      };
    } ]);
//去掉不需要显示的字段  
routerApp.filter('filterTable', function() {
  return function(obj) {
    var newObj = {};
    for ( var i in obj) {
      var property = obj[i];
      if(i != 'checked'){
        newObj[i] = property;
      }
    }
    //console.log(newObj);
    return newObj;
  };
});

以上所述是小编给大家介绍的Angularjs bootstrap table多选(全选)支持单击行选中实现编辑、删除功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JQuery 风格的HTML文本转义
Jul 01 Javascript
让Firefox支持event对象实现代码
Nov 07 Javascript
基于Jquery实现表格动态分页实现代码
Jun 21 Javascript
浅谈关于JavaScript的语言特性分析
Apr 11 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
Oct 24 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
Nov 03 Javascript
微信小程序progress组件使用详解
Jan 31 Javascript
解决vue点击控制单个样式的问题
Sep 05 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
Sep 13 Javascript
javascript数据类型中的一些小知识点(推荐)
Apr 18 Javascript
javascript实现日历效果
Jun 17 Javascript
JavaScript实现简单图片切换
Apr 29 Javascript
JS闭包用法实例分析
Mar 27 #Javascript
vue 2.0组件与v-model详解
Mar 27 #Javascript
JavaScript无缝滚动效果的实例代码
Mar 27 #Javascript
JS数组搜索之折半搜索实现方法分析
Mar 27 #Javascript
javascript实现下雨效果
Mar 27 #Javascript
HTML的select控件美化
Mar 27 #Javascript
JS实现的点击表头排序功能示例
Mar 27 #Javascript
You might like
php检索或者复制远程文件的方法
2015/03/13 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
php结合ajax实现手机发红包的案例
2016/10/13 PHP
总结的一些PHP开发中的tips(必看篇)
2017/03/24 PHP
详解PHP序列化和反序列化原理
2018/01/15 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
用jquery的方法制作一个简单的导航栏
2014/06/23 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
浅谈Javascript数据属性与访问器属性
2016/07/26 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
webpack 4.0.0-beta.0版本新特性介绍
2018/02/10 Javascript
React中嵌套组件与被嵌套组件的通信过程
2018/07/11 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
2019/04/22 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
2020/07/19 Javascript
[05:08]顺网杯ISS-DOTA2赛歌 少女偶像Lunar青春演绎
2013/12/05 DOTA
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
Python中unittest用法实例
2014/09/25 Python
Python读大数据txt
2016/03/28 Python
python的unittest测试类代码实例
2017/12/07 Python
Python异常处理知识点总结
2019/02/18 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
wxPython实现列表增删改查功能
2019/11/19 Python
Python进行统计建模
2020/08/10 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
春秋航空官方网站:Spring Airlines
2017/09/27 全球购物
Collection和Collections的区别
2016/05/02 面试题
2014道德模范事迹材料
2014/02/16 职场文书
放飞梦想演讲稿
2014/05/05 职场文书
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL