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的简单&amp;简陋Tabs插件代码
Feb 09 Javascript
js比较日期大小的方法
May 12 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
Oct 09 Javascript
Bootstrap精简教程
Nov 27 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
Nov 30 Javascript
详解vue-router 路由元信息
Sep 13 Javascript
微信禁止下拉查看URL的处理方法
Sep 28 Javascript
详解tween.js 中文使用指南
Jan 05 Javascript
vue组件name的作用小结
May 23 Javascript
基于打包工具Webpack进行项目开发实例
May 29 Javascript
移动端(微信等使用vConsole调试console的方法
Mar 05 Javascript
vue created钩子函数与mounted钩子函数的用法区别
Nov 05 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
php获取发送给用户的header信息的方法
2015/03/16 PHP
使用图灵api创建微信聊天机器人
2015/07/23 PHP
php 可变函数使用小结
2018/06/12 PHP
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
jquery.form.js用法之清空form的方法
2014/03/07 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
AngularJS用户选择器指令实例分析
2016/11/04 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
小程序点击图片实现png转jpg
2019/10/22 Javascript
vue项目查看vue版本及cli版本的实现方式
2020/10/24 Javascript
ES6 十大特性简介
2020/12/09 Javascript
python基础教程之常用运算符
2014/08/29 Python
Python中的两个内置模块介绍
2015/04/05 Python
python爬虫爬取淘宝商品信息
2018/02/23 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
python 实现求解字符串集的最长公共前缀方法
2018/07/20 Python
Python装饰器简单用法实例小结
2018/12/03 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
导入tensorflow时报错:cannot import name 'abs'的解决
2019/10/10 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
Python 音频生成器的实现示例
2019/12/24 Python
python RSA加密的示例
2020/12/09 Python
利用canvas实现图片下载功能来实现浏览器兼容问题
2019/05/31 HTML / CSS
奥巴马演讲稿
2014/01/08 职场文书
教师党员个人自我剖析材料
2014/09/29 职场文书
班子成员四风问题自我剖析材料
2014/09/29 职场文书
2014年药店工作总结
2014/11/20 职场文书
小石潭记导游词
2015/02/03 职场文书
专项资金申请报告
2015/05/15 职场文书
Python实现查询剪贴板自动匹配信息的思路详解
2021/07/09 Python
SpringBoot中获取profile的方法详解
2022/04/08 Java/Android