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 相关文章推荐
Javascript Jquery 遍历Json的实现代码
Mar 31 Javascript
基于jquery的合并table相同单元格的插件(精简版)
Apr 05 Javascript
JavaScript中setInterval的用法总结
Nov 20 Javascript
jquery实现简单的无缝滚动
Apr 15 Javascript
js如何改变文章的字体大小
Jan 08 Javascript
vue滚动轴插件better-scroll使用详解
Oct 17 Javascript
Vue微信项目按需授权登录策略实践思路详解
May 07 Javascript
JavaScript插入排序算法原理与实现方法示例
Aug 06 Javascript
Vue CLI3 如何支持less的方法示例
Aug 29 Javascript
koa+mongoose实现简单增删改查接口的示例代码
May 13 Javascript
JavaScript简易计算器制作
Jan 17 Javascript
js实现弹幕墙效果
Dec 10 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
simplehtmldom Doc api帮助文档
2012/03/26 PHP
PHP中的traits简单使用实例
2015/05/13 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
2016/03/10 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
PHP实现 APP端微信支付功能
2018/06/22 PHP
php获取微信openid方法总结
2019/10/10 PHP
JavaScript经典效果集锦
2010/07/06 Javascript
JavaScript 错误处理与调试经验总结
2010/08/10 Javascript
javascript检查表单数据是否改变的方法
2013/07/30 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
2014/04/17 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
JS实现的在线调色板实例(附demo源码下载)
2016/03/01 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
解决JS表单验证只有第一个IF起作用的问题
2018/12/04 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
JavaScript常用进制转换及位运算实例解析
2020/10/14 Javascript
详细介绍Ruby中的正则表达式
2015/04/10 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
python多进程并发demo实例解析
2019/12/13 Python
毕业生自荐信
2013/12/14 职场文书
会议邀请函范文
2014/01/09 职场文书
舞出我人生观后感
2015/06/16 职场文书
公司联欢会主持词
2015/07/04 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书
2019关于实习生工作安排及待遇的管理方案!
2019/07/16 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
Python极值整数的边界探讨分析
2021/09/15 Python
在Python 中将类对象序列化为JSON
2022/04/06 Python