ng-table 简单实例

今天用的AngularJs需要做个分页,于是用ng-table去实现,不过这个官网感觉有点坑,说的不够清楚。

下面实现了一个Demo实力,代码如下:

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>Title</title>
  6     <link rel="stylesheet" href="../../resources/ng-table/ng-table.min.css">
  7     <link rel="stylesheet" href="../../resources/ng-table/bootstrap.min.css">
  8     <script src="../../resources/ng-table/lodash.min.js"></script>
  9     <script src="../../resources/ng-table/jquery-2.2.4.js"></script>
 10     <script src="../../resources/ng-table/angular.js"></script>
 11     <script src="../../resources/ng-table/ng-table.js"></script>
 12     <style>
 13         .demoTable td:last-child {
 14             min-width: 90px;
 15         }
 16         /** Editable table
 17         ------------------------- */
 18         .editable-table > tbody > tr > td {
 19             padding: 4px
 20         }
 21         .editable-text {
 22             padding-left: 4px;
 23             padding-top: 4px;
 24             padding-bottom: 4px;
 25             display: inline-block;
 26         }
 27         .editable-table tbody > tr > td > .controls {
 28         //width: 100%
 29         }
 30         .editable-input {
 31             padding-left: 3px;
 32         }
 33         .editable-input.input-sm {
 34             height: 30px;
 35             font-size: 14px;
 36             padding-top: 4px;
 37             padding-bottom: 4px;
 38         }
 39     </style>
 40 </head>
 41 <body>
 42 <div ng-app="myApp">
 43     <div ng-controller="demoController as demo">
 44         <h2 class="page-header">Loading data - managed array</h2>
 45         <div class="bs-callout bs-callout-info">
 46             <h4>Overview</h4>
 47             <p>When you have the <em>entire</em> dataset available in-memory you can hand this to <code>NgTableParams</code> to manage the filtering, sorting and paging of that array</p>
 48         </div>
 49         <table ng-table="demo.tableParams" class="table table-condensed table-bordered table-striped">
 50             <tr ng-repeat="row in $data" ng-form="rowForm" demo-tracked-table-row="row">
 51                 <td title="‘Name‘" filter="{name: ‘text‘}" sortable="‘name‘" ng-switch="row.isEditing" ng-class="name.$dirty ? ‘bg-warning‘ : ‘‘" ng-form="name" demo-tracked-table-cell>
 52                     <span ng-switch-default class="editable-text">{{row.name}}</span>
 53                     <div class="controls" ng-class="name.$invalid && name.$dirty ? ‘has-error‘ : ‘‘" ng-switch-when="true">
 54                         <input type="text" name="name" ng-model="row.name" class="editable-input form-control input-sm" required />
 55                     </div>
 56                 </td>
 57                 <td title="‘Age‘" filter="{age: ‘number‘}" sortable="‘age‘" ng-switch="row.isEditing" ng-class="age.$dirty ? ‘bg-warning‘ : ‘‘" ng-form="age" demo-tracked-table-cell>
 58                     <span ng-switch-default class="editable-text">{{row.age}}</span>
 59                     <div class="controls" ng-class="age.$invalid && age.$dirty ? ‘has-error‘ : ‘‘" ng-switch-when="true">
 60                         <input type="number" name="age" ng-model="row.age" class="editable-input form-control input-sm" required/>
 61                     </div>
 62                 </td>
 63                 <td title="‘Money‘" filter="{money: ‘number‘}" sortable="‘money‘" ng-switch="row.isEditing" ng-class="money.$dirty ? ‘bg-warning‘ : ‘‘" ng-form="money" demo-tracked-table-cell>
 64                     <span ng-switch-default class="editable-text">{{row.money}}</span>
 65                     <div class="controls" ng-class="money.$invalid && money.$dirty ? ‘has-error‘ : ‘‘" ng-switch-when="true">
 66                         <input type="number" name="money" ng-model="row.money" class="editable-input form-control input-sm" required/>
 67                     </div>
 68                 </td>
 69                 <!--<td data-title="‘Name‘" filter="{name: ‘text‘}" sortable="‘name‘">{{row.name}}</td>-->
 70                 <!--<td data-title="‘Age‘" filter="{age: ‘number‘}" sortable="‘age‘">{{row.age}}</td>-->
 71                 <!--<td data-title="‘Money‘" filter="{money: ‘number‘}" sortable="‘money‘">{{row.money}}</td>-->
 72                 <td>
 73                     <button class="btn btn-primary btn-sm" ng-click="demo.save(row, rowForm)" ng-if="row.isEditing" ng-disabled="rowForm.$pristine || rowForm.$invalid"><span class="glyphicon glyphicon-ok"></span></button>
 74                     <button class="btn btn-default btn-sm" ng-click="demo.cancel(row, rowForm)" ng-if="row.isEditing"><span class="glyphicon glyphicon-remove"></span></button>
 75                     <button class="btn btn-default btn-sm" ng-click="row.isEditing = true" ng-if="!row.isEditing"><span class="glyphicon glyphicon-pencil"></span></button>
 76                     <button class="btn btn-danger btn-sm" ng-click="demo.del(row)" ng-if="!row.isEditing"><span class="glyphicon glyphicon-trash"></span></button>
 77                 </td>
 78             </tr>
 79         </table>
 80     </div>
 81 </div>
 82 <script>
 83     (function() {
 84         "use strict";
 85
 86         var app = angular.module("myApp", ["ngTable"]);
 87
 88         app.controller("demoController", demoController);
 89 //        demoController.$inject = ["NgTableParams", "ngTableSimpleList"];
 90
 91         var data = [
 92             {name: "Moroni", age: 16, money: 88.1},
 93             {name: "Enos", age: 99, money: 22.3},
 94             {name: "Tracy", age: 2, money: 22.4},
 95             {name: "Oracle", age: 31, money: 33.3},
 96             {name: "Java", age: 13, money: 53.3},
 97             {name: "Php", age: 46, money: 67.3}
 98         ];
 99
100         function demoController(NgTableParams,$http,$scope) {
101             var self = this;
102             self.tableParams = new NgTableParams({}, {
103                 filterDelay: 0,
104                 dataset: data
105             });
106             self.cancel = cancel;
107             self.del = del;
108             self.save = save;
109             function cancel(row, rowForm) {
110                 var originalRow = resetRow(row, rowForm);
111                 angular.extend(row, originalRow);
112             }
113
114             function del(row) {
115                 _.remove(self.tableParams.settings().dataset, function(item) {
116                     return row === item;
117                 });
118                 self.tableParams.reload().then(function(data) {
119                     if (data.length === 0 && self.tableParams.total() > 0) {
120                         self.tableParams.page(self.tableParams.page() - 1);
121                         self.tableParams.reload();
122                     }
123                 });
124             }
125
126             function resetRow(row, rowForm){
127                 row.isEditing = false;
128                 rowForm.$setPristine();
129                 self.tableTracker.untrack(row);
130                 return _.findWhere(originalData, function(r){
131                     return r.id === row.id;
132                 });
133             }
134
135             function save(row, rowForm) {
136                 var originalRow = resetRow(row, rowForm);
137                 angular.extend(originalRow, row);
138             }
139         }
140     })();
141 </script>
142 </body>
143 </html>

页面的效果:

ng-table="demo.tableParams" 的demo不能去掉,改用官网的第一个例子vm.tableParams也不行的。

这里只是一个简单的测试,等有进一步的了解再记录。
时间: 2024-10-27 07:10:56

ng-table 简单实例的相关文章

AJAX学习整理二之简单实例

做了几个简单的实例,加载txt文本内容.加载xml文件内容,把xml文本内容转换成html表格显示.废话不多说,直接贴代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/html"> <head>     <title>通过ajax获取文本内容</title>     <meta charset="utf-8">     <scr

jQuery Datatable 实用简单实例

目标: 使用jQuery Datatable构造数据列表,并且增加或者隐藏相应的列,已达到数据显示要求.同时,jQuery Datatable强大的功能支持:排序,分页,搜索等. Query Datatable能良好支持数据完全加载到本地后构建数据列表,排序.分页.搜索等功能就会自带,不需要我们去关心,在此主要说明通过后台动态的加载数据,已达到在大数据面前提高效率的效果. 1. 通过后台进行分页 2. 通过后台进行排序 3. 通过后台进行搜索 具体使用方法: 1. 首先构建我们需要的数据列表,以

【SSH进阶之路】Hiberante3搭建开发环境+简单实例(二)

Hibernate是非常典型的持久层框架,持久化的思想是非常值得我们学习和研究的.这篇博文,我们主要以实例的形式学习Hibernate,不深究Hibernate的思想和原理,否则,一味追求,苦学思想和原理,到最后可能什么也学不会,从实践入手,熟能生巧,思想和原理自然而然领悟. 上篇博文:[SSH进阶之路]Hibernate基本原理,我们介绍了Hibernate的基本概念.Hibernate的核心以及Hibernate的执行原理,可以很好帮助我们认识Hibernate,再看这篇博客之前,请先回顾上

当文本框失去焦点即进行表单验证简单实例

当文本框失去焦点即进行表单验证简单实例:不少的表单验证都有这样的功能,就是当鼠标焦点离开文本框的时候,即刻进行合法性验证,下面就通过一个实例简单介绍一下如何实现此功能,代码实例如下: <script type="text/javascript"> function onblurs(){ if(myform.name.value==""){ alert("姓名不得为空!"); } else if(myform.address.value

(三)AJAX基本介绍和简单实例03

AJAX基本介绍和简单实例03-----Ajax与数据库的动态应用 初始界面: 选择所有用户后显示的界面: 查询姓名为杜森的客户,结果如下: Demo03.html代码如下: <html> <meta http-equiv="content-type" content="text/html" charset="utf-8"/> <head> <style> body { background:#CC

利用navicat创建存储过程、触发器和使用游标的简单实例

创建存储过程和触发器 1.建表 首先先建两张表(users表和number表),具体设计如下图: 2.存储过程 写一个存储过程,往users表中插入数据,创建过程如下: 代码如下: BEGIN     #Routine body goes here...     declare n bigint;     set n = 201121029684;     while n <= 201121029694     do         insert into users(student_ID) v

【MySQL】存储过程、游标、循环简单实例

有时候仅凭 sql 语句可能达不到想要的数据操作目的,有可能需要写一些方法体,通过循环判断等操作最终达到目的.那么在数据库里实现这种方法体就需要存储过程了,个人觉得一个带注释的简单实例可以简单粗暴地解决大部分问题,当然要深入学习了解的话还是要看教程文档了,话不多说,上码: [sql] view plain copy create procedure my_procedure() -- 创建存储过程 begin -- 开始存储过程 declare my_id varchar(32); -- 自定义

session 对象的简单实例

一个session对象的简单实例: 1.登录界面:使用简单的html表单提交界面. <%@ page language="java" contentType="text/html; charset=GB18030"    pageEncoding="GB18030"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "ht

javamail发送邮件的简单实例(转)

javamail发送邮件的简单实例 今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码是我的全部代码,朋友们如果想用,直接复制即可. 第一个类:MailSenderInfo.java package com.util.mail;    /**    * 发送邮件需要使用的基本信息  *author by wangfun http://www.5a520.cn 小说520   */  

Spring+Struts 2 简单实例报空指针异常

空指针出现于Action注入位置..如果一般错误请检查配置文件. 我出的错误.在于拷贝了之前做的实例中的lib文件夹到这个工程中. 其中有个包为struts2-convention-plugin-2.3.16.3.jar 造成了包识别异常.出现空指针.有类似经历的可以查看,也给大家提个醒.不要一气呵成的导入所有包.容易出现混乱.也不利于大家清楚的认识包和代码的联系. Spring+Struts 2 简单实例报空指针异常,布布扣,bubuko.com