angularjs表格ng-table使用备忘录


Posted in Javascript onMarch 09, 2016

项目中用到angularjs的表格ng-table,功能相当强大,像搜索、排序、checkbox、分页、每页表格显示数目等都有。API,demo什么的也只能参考官网了。这里做个备忘,哪天肯定还会用到。

HTML:

<!DOCTYPE html>
<html>
<meta charset="utf-8"/>
<head>
  <script data-require="angular.js@*" data-semver="1.2.0-rc3-nonmin" src="angular.js"></script>
  <script data-require="ng-table@*" data-semver="0.3.0" src="ngTable.js"></script>
  
  <link data-require="ng-table@*" data-semver="0.3.0" rel="stylesheet" href="http://bazalt-cms.com/assets/ng-table/0.3.2/ng-table.css" />
  <link data-require="bootstrap-css@*" data-semver="3.0.0" rel="stylesheet" href="bootstrap.min.css" />
  
  <link rel="stylesheet" href="style.css" />
  <script src="script.js"></script>
</head>

<body ng-app="main" ng-controller="DemoCtrl">
  <p><strong>Page:</strong> {{tableParams.page()}}
  <p><strong>Count per page:</strong> {{tableParams.count()}}

<p>Filter: <input class="form-control" type="text" ng-model="filter.$" /></p>

  <table ng-table="tableParams" show-filter="true" class="table">
    <tr ng-repeat="user in $data" ng-class="{ 'emphasis': user.money > 500 }">
      <td width="30" style="text-align: left" header="'ng-table/headers/checkbox.html'">
        <input type="checkbox" ng-model="checkboxes.items[user.organizationId]" />
      </td>
      <td data-title="'编号'" sortable="'organizationId'">
        {{user.organizationId}}
      </td>
      <td data-title="'名称'" sortable="'name'">
        {{user.name}}
      </td>
    </tr>
  </table>
  <script type="text/ng-template" id="ng-table/headers/checkbox.html">
    <input type="checkbox" ng-model="checkboxes.checked" id="select_all" name="filter-checkbox" value="" />
  </script>

</body>
</html>

js:

var app = angular.module('main', ['ngTable']).
controller('DemoCtrl', function($scope, ngTableParams, NameService) {

  var data = NameService.data;

  $scope.tableParams = new ngTableParams(
   {
    page: 1,      // show first page
    count: 10,      // count per page
    sorting: {name:'asc'}
   },
   {
    total: 0, // length of data
    getData: function($defer, params) {
     NameService.getData($defer,params,$scope.filter);
    }
  });
  
  $scope.$watch("filter.$", function () {
    $scope.tableParams.reload();
  });
  
});

app.service("NameService", function($http, $filter){
 
 function filterData(data, filter){
  return $filter('filter')(data, filter);
 }
 
 function orderData(data, params){
  return params.sorting() ? $filter('orderBy')(data, params.orderBy()) : filteredData;
 }
 
 function sliceData(data, params){
  return data.slice((params.page() - 1) * params.count(), params.page() * params.count())
 }
 
 function transformData(data,filter,params){
  return sliceData( orderData( filterData(data,filter), params ), params);
 }
 
 var service = {
  cachedData:[],
  getData:function($defer, params, filter){
   if(service.cachedData.length>0){
    console.log("using cached data")
    var filteredData = filterData(service.cachedData,filter);
    var transformedData = sliceData(orderData(filteredData,params),params);
    params.total(filteredData.length)
    $defer.resolve(transformedData);
   }
   else{
    console.log("fetching data")
    $http.get("data.json").success(function(resp)
    {
     angular.copy(resp,service.cachedData)
     params.total(resp.length)
     var filteredData = $filter('filter')(resp, filter);
     var transformedData = transformData(resp,filter,params)
     
     $defer.resolve(transformedData);
    }); 
   }
   
  }
 };
 return service; 
});

json数据:

[{
      "hidden": 1,
      "launchImage": "2015_4_9_12_bb7e0a446ed74ae7ad0a3554a54183bc_1298477763",
      "name": "张三",
      "orgId": 1498031949070997504,
      "organizationId": "1498031949070997504"
    }, {
      "hidden": 1,
      "launchImage": "http://7s1rmc.com1.z0.glb.clouddn.com/2015_4_9_12_0ab5b02cf1df4ac49a7376b820816307_2127491219|39e202124ac90ec531009b0edbbbe0ba",
      "name": "李四",
      "orgId": 1498046360909250560,
      "organizationId": "1498046360909250560"
    }]

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
对于Form表单reset方法的新认识
Mar 05 Javascript
在JS中解析HTML字符串示例代码
Apr 16 Javascript
js使用post 方式打开新窗口
Feb 26 Javascript
JavaScript通过this变量快速找出用户选中radio按钮的方法
Mar 23 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
Aug 04 Javascript
Fullpage.js固定导航栏-实现定位导航栏
Mar 17 Javascript
AngularJS入门教程引导程序
Aug 18 Javascript
省市区三级联动jquery实现代码
Apr 15 Javascript
js中json处理总结之JSON.parse
Oct 14 Javascript
javascript获取指定区间范围随机数的方法
Sep 08 Javascript
vue的全局变量和全局拦截请求器的示例代码
Sep 13 Javascript
vue 获取元素额外生成的data-v-xxx操作
Sep 09 Javascript
详解AngularJS控制器的使用
Mar 09 #Javascript
JQuery Mobile实现导航栏和页脚
Mar 09 #Javascript
javascript基本算法汇总
Mar 09 #Javascript
javascript时间排序算法实现活动秒杀倒计时效果
Jan 28 #Javascript
javascript获取wx.config内部字段解决微信分享
Mar 09 #Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
Mar 09 #Javascript
jquery实现文本框textarea自适应高度
Mar 09 #Javascript
You might like
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
php和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
2014/11/12 PHP
浅谈PHP中try{}catch{}的使用方法
2016/12/09 PHP
Yii2框架redis基本应用示例
2018/07/13 PHP
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
ie下jquery.getJSON的缓存问题的处理方法
2013/03/29 Javascript
javascript 获取元素样式必杀技
2014/05/04 Javascript
使用js画图之画切线
2015/01/12 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
2016/01/08 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
详解基于Node.js的HTTP/2 Server实践
2018/05/31 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
layui之数据表格--与后台交互获取数据的方法
2019/09/29 Javascript
vue3.0+vue-router+element-plus初实践
2020/12/02 Vue.js
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
pandas ix &amp;iloc &amp;loc的区别
2019/01/10 Python
Python操作SQLite/MySQL/LMDB数据库的方法
2019/11/07 Python
Transpose 数组行列转置的限制方式
2020/02/11 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
python怎么判断模块安装完成
2020/06/19 Python
Python利用matplotlib绘制折线图的新手教程
2020/11/05 Python
ET Mall东森购物网:东森严选
2017/03/06 全球购物
教师自我评价范文
2013/12/16 职场文书
幼儿园教师培训方案
2014/02/04 职场文书
给市场的环保建议书
2014/05/14 职场文书
股东合作协议书
2014/09/12 职场文书
2015元旦晚会主持人开场白+结束语
2014/12/14 职场文书
十佳少年事迹材料
2014/12/25 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书
tensorflow中的数据类型dtype用法说明
2021/05/26 Python
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
2021/05/30 Javascript
mysql5.7使用binlog 恢复数据的方法
2021/06/03 MySQL
python代码实现扫码关注公众号登录的实战
2021/11/01 Python