angularJs中datatable实现代码

yizhihongxing

下面给出AngularJS中datatable实现代码的完整攻略,这里使用的是AngularJS版本为1.x,实现过程中需要使用一些第三方库来支持。攻略分成以下几个步骤:

步骤一 安装必需的依赖

在开始之前,你需要在本地安装以下库:

  • jQuery:用于操作DOM和事件处理
  • Bootstrap:用于样式
  • AngularJS:主要的MVC框架
<!-- jQuery -->
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<!-- Bootstrap -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<!-- AngularJS -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>

步骤二 安装 DataTables 插件

为了能使用 DataTables 插件,需要将其下载下来并包含在项目中。下载地址:https://datatables.net/ 下载后需要包含以下文件:

<!-- DataTables -->
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/dt/dt-1.10.20/datatables.min.css"/>
<script type="text/javascript" src="https://cdn.datatables.net/v/dt/dt-1.10.20/datatables.min.js"></script>

步骤三 创建 AngularJS 应用程序

<div ng-app="myApp" ng-controller="myCtrl">
...
</div>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
});

步骤四 生成静态表格

<table id="example" class="table table-striped table-bordered" style="width:100%">
  <thead>
    <tr>
      <th>Name</th>
      <th>Position</th>
      <th>Office</th>
      <th>Age</th>
      <th>Start date</th>
      <th>Salary</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Tiger Nixon</td>
      <td>System Architect</td>
      <td>Edinburgh</td>
      <td>61</td>
      <td>2011/04/25</td>
      <td>$320,800</td>
    </tr>
    <tr>
      <td>Garrett Winters</td>
      <td>Accountant</td>
      <td>Tokyo</td>
      <td>63</td>
      <td>2011/07/25</td>
      <td>$170,750</td>
    </tr>
  </tbody>
</table>

步骤五 初始化 DataTables

在AngularJS 控制器中,通过 jQuery 的 DataTables 插件来初始化静态表格:

var table = $('#example').DataTable();

这样会将静态表格转变成 DataTables 表格,具备排序、搜索等功能。

示例一:绑定 AngularJS 数据模型

<table id="example" class="table table-striped table-bordered" style="width:100%">
  <thead>
    <tr>
      <th>Name</th>
      <th>Position</th>
      <th>Office</th>
      <th>Age</th>
      <th>Start date</th>
      <th>Salary</th>
    </tr>
  </thead>
  <tbody>
    <tr ng-repeat="person in datas">
      <td>{{person.name}}</td>
      <td>{{person.position}}</td>
      <td>{{person.office}}</td>
      <td>{{person.age}}</td>
      <td>{{person.start_date}}</td>
      <td>{{person.salary}}</td>
    </tr>
  </tbody>
</table>
$scope.datas = [
  {
    "name": "Tiger Nixon",
    "position": "System Architect",
    "office": "Edinburgh",
    "age": "61",
    "start_date": "2011/04/25",
    "salary": "$320,800"
  },
  {
    "name": "Garrett Winters",
    "position": "Accountant",
    "office": "Tokyo",
    "age": "63",
    "start_date": "2011/07/25",
    "salary": "$170,750"
  },
  ...
];
$scope.$on('$viewContentLoaded', function() {
  var table = $('#example').DataTable({
    data: $scope.datas,
    columns: [
      { data: 'name' },
      { data: 'position' },
      { data: 'office' },
      { data: 'age' },
      { data: 'start_date' },
      { data: 'salary' }
    ]
  });
});

这样,在初始化 DataTables 实例时,将数据模型绑定到了表格上,可以直接显示数据。

示例二:服务端分页、搜索

$scope.$on('$viewContentLoaded', function() {
  var table = $('#example').DataTable({
    "processing": true,
    "serverSide": true,
    "ajax": "data.php",
    "columns": [
      { "data": "name" },
      { "data": "position" },
      { "data": "office" },
      { "data": "age" },
      { "data": "start_date" },
      { "data": "salary" }
    ]
  });
});

在这个示例中,我们将 DataTabes 的 serverSide 参数设置为 true,这意味着我们将使用服务器端分页、排序和搜索。对于此示例,我们需要在服务器端编写来自数据库的数据的查询语句,并将此编写为PHP文件。

<?php
// Database connection
$db_host = 'localhost';
$db_user = 'root';
$db_password = '';
$db_database = 'mydb';
$conn = mysqli_connect($db_host, $db_user, $db_password, $db_database);

// DataTables PHP library for server-side processing
require 'https://cdn.datatables.net/1.10.21/css/dataTables.bootstrap.min.css';
require 'https://cdn.datatables.net/1.10.21/js/jquery.dataTables.min.js';
require 'https://cdn.datatables.net/1.10.21/js/dataTables.bootstrap.min.js';

// SQL query to get data from database
$sql = "SELECT * FROM employee";

// Get total number of records
$totalRecords = mysqli_query($conn, $sql);
$totalRecords = mysqli_num_rows($totalRecords); 

// Get total number of records with filtering
$filter = $_REQUEST['search']['value'];
if(!empty($filter)){
    $sql .= " WHERE name LIKE '%$filter%'";
}
$totalResult = mysqli_query($conn, $sql);
$totalResult = mysqli_num_rows($totalResult); 

// SQL query to get data from database
$sql .= " ORDER BY name ASC "; 
$sql .= " LIMIT ".$_REQUEST['start']." ,".$_REQUEST['length']."   ";
$stmt = $conn->prepare($sql);
$stmt->execute(); 
$result = $stmt->get_result();

// Fetch data into array
$data = array();
while ($row = $result->fetch_assoc()) {
    $data[] = $row;
}

// Response generation
$response = array(
    "draw" => intval($_REQUEST['draw']),
    "iTotalRecords" => $totalRecords,
    "iTotalDisplayRecords" => $totalResult,
    "aaData" => $data
);

header('Content-Type: application/json');
echo json_encode($response);
?>

其中,处理分页、搜索、排序等功能的核心代码段为:

// Get total number of records with filtering
$filter = $_REQUEST['search']['value'];
if(!empty($filter)){
    $sql .= " WHERE name LIKE '%$filter%'";
}
$totalResult = mysqli_query($conn, $sql);
$totalResult = mysqli_num_rows($totalResult); 

// SQL query to get data from database
$sql .= " ORDER BY name ASC "; 
$sql .= " LIMIT ".$_REQUEST['start']." ,".$_REQUEST['length']."   ";

数据请求和响应完毕后,需要填充到 DataTables 实例中。

$scope.$on('$viewContentLoaded', function() {
    $('#example').DataTable({
        "processing": true,
        "serverSide": true,
        "ajax":{
            url :"data.php", // json datasource
            type: "post",  // method  , by default get
            error: function(){  // error handling
                $("#example").append('<tbody><tr><th colspan="3">数据加载中...</th></tr></tbody>');
            }
        },
        "columns": [
            { "data": "name" },
            { "data": "position" },
            { "data": "office" },
            { "data": "age" },
            { "data": "start_date" },
            { "data": "salary" }
        ]
    });
});

这样,我们就完成了一个带分页、搜索功能的 DataTables 示例。

以上就是AngularJS中datatable实现代码的完整攻略了,以上演示的代码都已经可以在实例中运行,读者可以根据自身实际需求修改代码,并进行拓展。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:angularJs中datatable实现代码 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • js 创建对象 经典模式全面了解

    JS创建对象-经典模式 在JavaScript中,对象是实例化一个类的一种方式。JS有很多种方式来创建对象,经典模式是其中一种,也是​​最基础的一种,但是在ES6中已经有了更加方便的方式来实现创建对象。 经典方式 那么什么是经典方式呢?经典方式指的是使用构造函数来实现创建对象。 构造函数创建对象 构造函数实际上就是普通的JS函数,在使用构造函数创建对象的时候…

    JavaScript 2023年5月27日
    00
  • 获取URL地址中的文件名和参数的javascript代码

    获取URL地址中的文件名和参数是前端开发中常见的需求,通过Javascript代码可以轻松实现此操作。下面是一份完整的攻略。 步骤一:获取URL地址 首先需要获取当前页面的URL地址,可以使用Javascript中window对象的location属性来实现,代码如下: var currentUrl = window.location.href; 此处的cu…

    JavaScript 2023年5月27日
    00
  • 微信小程序实现计时器开始和结束功能

    微信小程序实现计时器开始和结束功能攻略 应用场景 计时器在我们日常生活活跃跑步、健身、制作食品等方面有着广泛的应用场景,在小程序中实现计时功能可以提升小程序的用户体验度。 实现思路 微信小程序提供了定时器API能力,我们只需要定义计时器的开始时间和结束时间,在每次执行时取当前时间和结束时间的差值,从而得到当前的计时器时间。我们可以通过wx.showModal…

    JavaScript 2023年6月11日
    00
  • 微信小程序 开发指南详解

    微信小程序开发指南详解 微信小程序是一种新型的移动应用程序,能够在微信里面直接运行,不需要额外的下载和安装,具有运行快速、使用方便等优点。本文将详细介绍微信小程序的开发流程,包括微信小程序的创建、开发工具的使用、页面和组件的开发、云开发等内容。 微信小程序的创建 微信小程序的创建需要先登录微信小程序开发者平台,如果没有账号需要先注册。登录后在开发者中心可以进…

    JavaScript 2023年5月27日
    00
  • JavaScript数据类型及相互间的转换规则

    JavaScript数据类型及相互间的转换规则 在JavaScript中,数据类型可以分为基本数据类型和引用数据类型,其中基本数据类型包括:数字、字符串、布尔值、null、undefined以及symbol(ES6新增),引用数据类型包括:对象、数组、函数等。 基本数据类型 数字 数字类型包括整数和浮点数。JavaScript中所有数字都是浮点数,例如: l…

    JavaScript 2023年5月28日
    00
  • 微信小程序实现课程选择器

    下面就来详细讲解一下“微信小程序实现课程选择器”的完整攻略。 1. 准备工作 在开始实现课程选择器之前,我们需要进行一些前置工作:1. 准备一台电脑,并安装好微信开发者工具。2. 在微信开发者工具中注册一个小程序账号,并创建一个小程序项目。3. 确定选择器的UI样式和功能。 2. 实现方法 下面我们将分为以下几个步骤来实现课程选择器:1. 在小程序项目根目录…

    JavaScript 2023年5月28日
    00
  • 基于 D3.js 绘制动态进度条的实例详解

    这里我将为大家详细讲解“基于 D3.js 绘制动态进度条的实例详解”的完整攻略。 1. D3.js 简介 在开始讲解如何绘制动态进度条之前,先简单介绍一下 D3.js。D3.js 是一个用于操作文档的 JavaScript 库。D3.js 可以帮助开发者使用 HTML、SVG、CSS 和 JavaScript 创建动态交互数据图表和数据可视化效果。 2. 进…

    JavaScript 2023年6月10日
    00
  • JS获取html元素的标记名实现方法

    获取 HTML 元素标记名是 JavaScript 中常用的操作,以下是实现方法的详细攻略: 1. 使用 tagName 属性获取标记名 可以使用 tagName 属性来获取 HTML 元素的标记名。该属性只能用于 DOM 对象,对于文本节点和注释节点是无效的。 示例代码如下: // 获取某个元素的标记名 const element = document.g…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部