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 相关文章推荐
读jQuery之十一 添加事件核心方法
Jul 31 Javascript
javascript移动设备Web开发中对touch事件的封装实例
Jun 05 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
Sep 26 Javascript
浅析JS运动
Dec 28 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
Jan 04 Javascript
AngularJS入门示例之Hello World详解
Jan 04 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
Jun 28 Javascript
基于Vue 2.0的模块化前端 UI 组件库小结
Dec 21 Javascript
微信小程序将字符串生成二维码图片的操作方法
Jul 17 Javascript
vue中get请求如何传递数组参数的方法示例
Nov 08 Javascript
JavaScript Window窗口对象属性和使用方法
Jan 19 Javascript
jQuery实现全选按钮
Jan 01 jQuery
详解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
重置版游戏视频
2020/04/09 魔兽争霸
PHP面向接口编程 耦合设计模式 简单范例
2011/03/23 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
PHP实现阿里大鱼短信验证的实例代码
2017/07/10 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
2020/08/06 PHP
javaScript - 如何引入js代码
2021/03/09 Javascript
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
使用js+jquery实现无限极联动
2013/05/23 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
canvas实现图像放大镜
2017/02/06 Javascript
如何理解jQuery中的ajaxSubmit方法
2017/03/13 Javascript
深入剖析Node.js cluster模块
2018/05/23 Javascript
JS基于封装函数实现的表格分页完整示例
2018/06/26 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
python代码制作configure文件示例
2014/07/28 Python
Python中的with语句与上下文管理器学习总结
2016/06/28 Python
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
详解python解压压缩包的五种方法
2019/07/05 Python
CSS3 画基本图形,圆形、椭圆形、三角形等
2016/09/20 HTML / CSS
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
国际花店:Pickup Flowers
2020/04/10 全球购物
品牌转让协议书
2014/08/20 职场文书
小学班级口号大全
2015/12/25 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS
elasticSearch-api的具体操作步骤讲解
2021/06/28 Java/Android
html5调用摄像头截图功能
2022/01/18 Javascript
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers