• 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也不行的。

    这里只是一个简单的测试,等有进一步的了解再记录。
  • 相关阅读:
    PHP 单例 工厂模式 类的重载 抽象 接口
    上传文件
    ThinkPHP3.2中if标签
    JS闭包特性 运算符 DOM操作
    循环数组 连接数据库 AJAX
    ThinkPHP
    TP框架
    MVC框架
    类的自动加载,静态属性静态方法
    魔术方法__get()和set函数
  • 原文地址:https://www.cnblogs.com/tiecheng/p/5911210.html
Copyright © 2020-2023  润新知