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 相关文章推荐
如何在父窗口中得知window.open()出的子窗口关闭事件
Oct 15 Javascript
原生JavaScript实现连连看游戏(附源码)
Nov 05 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
May 23 Javascript
使用C++为node.js写扩展模块
Apr 22 Javascript
JavaScript制作淘宝星级评分效果的思路
Jun 23 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
Apr 12 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
Aug 15 Javascript
jQuery Ajax全解析
Feb 13 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
Apr 26 Javascript
vue-router实现tab标签页(单页面)详解
Oct 17 Javascript
vue ssr 指南详读
Jun 29 Javascript
vue-cli配置全局sass、less变量的方法
Jun 06 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 版本]
2007/03/20 PHP
PHP中如何判断AJAX提交的数据
2012/02/05 PHP
PHP 线程安全与非线程安全版本的区别深入解析
2013/08/06 PHP
PHP扩展CURL的用法详解
2014/06/20 PHP
基于php实现的验证码小程序
2016/12/13 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
PHP代码加密的方法总结
2020/03/13 PHP
JavaScript中的apply()方法和call()方法使用介绍
2012/07/25 Javascript
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
JavaScript SetInterval与setTimeout使用方法详解
2013/11/15 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
详解react服务端渲染(同构)的方法
2017/09/21 Javascript
vue使用 better-scroll的参数和方法详解
2018/01/25 Javascript
JS执行控制之节流模式实例分析
2018/12/21 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
Python常用模块介绍
2014/11/21 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
python 字典操作提取key,value的方法
2019/06/26 Python
python频繁写入文件时提速的方法
2019/06/26 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
Lovedrobe官网:英国领先的大码服装品牌
2019/09/19 全球购物
客服文员岗位职责
2013/11/29 职场文书
2014国培学习感言
2014/03/05 职场文书
大学军训感言400字
2014/03/11 职场文书
法制宣传口号
2014/06/16 职场文书
升学宴演讲稿
2014/09/01 职场文书
公司备用金管理制度
2015/08/04 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书
反邪教教育心得体会
2016/01/15 职场文书
oracle表分区的概念及操作
2021/04/24 Oracle
Python中常见的导入方式总结
2021/05/06 Python
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS
html5调用摄像头实例代码
2021/06/28 HTML / CSS
AngularJS实现多级下拉框
2022/03/25 Javascript
【海涛解说】pis亲自推荐,其实你从来不会玩NW
2022/04/01 DOTA
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis