AngularJS表格基础知识笔记,如何实现动态排序与分页?

AngularJS 作为一款经典的前端 JavaScript 框架,其核心特性之一就是通过数据绑定简化动态页面的开发,在处理数据展示时,表格是常用的组件,AngularJS 提供了强大的指令来动态渲染和操作表格数据,下面将详细介绍 AngularJS 中表格相关的核心知识点。

AngularJS表格基础知识笔记,如何实现动态排序与分页?

基础表格渲染:ng-repeat 指令

在 AngularJS 中,ng-repeat 是最基础的数据循环指令,可用于动态生成表格行,假设有一个包含用户数据的数组 $scope.users,可通过以下方式渲染表格:

<table border="1">
  <thead>
    <tr>
      <th>ID</th>
      <th>姓名</th>
      <th>年龄</th>
    </tr>
  </thead>
  <tbody>
    <tr ng-repeat="user in users">
      <td>{{user.id}}</td>
      <td>{{user.name}}</td>
      <td>{{user.age}}</td>
    </tr>
  </tbody>
</table>

关键点

  • ng-repeat="user in users" 会遍历 $scope.users 数组,为每个元素创建一个 <tr> 元素。
  • 使用 {{user.property}} 绑定数据到单元格,AngularJS 会自动更新视图。

表格排序功能

实现动态排序需要结合 ng-repeatorderBy 过滤器,并通过变量控制排序字段和顺序。

<table>
  <thead>
    <tr>
      <th ng-click="sortBy('id')">ID <span ng-show="sortKey === 'id'">{{reverse ? '↑' : '↓'}}</span></th>
      <th ng-click="sortBy('name')">姓名 <span ng-show="sortKey === 'name'">{{reverse ? '↑' : '↓'}}</span></th>
      <th ng-click="sortBy('age')">年龄 <span ng-show="sortKey === 'age'">{{reverse ? '↑' : '↓'}}</span></th>
    </tr>
  </thead>
  <tbody>
    <tr ng-repeat="user in users | orderBy:sortKey:reverse">
      <td>{{user.id}}</td>
      <td>{{user.name}}</td>
      <td>{{user.age}}</td>
    </tr>
  </tbody>
</table>

控制器逻辑

$scope.sortKey = 'id'; // 默认排序字段
$scope.reverse = false; // 默认升序
$scope.sortBy = function(key) {
  if ($scope.sortKey === key) {
    $scope.reverse = !$scope.reverse; // 切换排序顺序
  } else {
    $scope.sortKey = key;
    $scope.reverse = false;
  }
};

关键点

  • orderBy:sortKey:reverse 中,sortKey 为排序字段,reverse 为布尔值(true 降序,false 升序)。
  • 点击表头时调用 sortBy 方法,动态更新 sortKeyreverse 实现排序。

表格过滤与搜索

通过 filter 过滤器可实现表格数据的实时搜索,通常结合输入框的 ng-model 指令。

AngularJS表格基础知识笔记,如何实现动态排序与分页?

<input type="text" ng-model="searchText" placeholder="搜索姓名或年龄">
<table>
  <thead>
    <tr>
      <th>姓名</th>
      <th>年龄</th>
    </tr>
  </thead>
  <tbody>
    <tr ng-repeat="user in users | filter:searchText">
      <td>{{user.name}}</td>
      <td>{{user.age}}</td>
    </tr>
  </tbody>
</table>

关键点

  • filter:searchText 会根据输入框的值过滤 $scope.users 数组,支持模糊匹配。
  • 若需指定过滤字段(如仅搜索姓名),可改为 filter:{name:searchText}

表格分页功能

分页需要手动计算当前页的数据范围,结合 limitTonumber 过滤器实现。

<div>
  每页显示:
  <select ng-model="pageSize">
    <option value="5">5</option>
    <option value="10">10</option>
  </select>
</div>
<table>
  <tbody>
    <tr ng-repeat="user in users | limitTo:pageSize: (currentPage-1)*pageSize">
      <td>{{user.name}}</td>
      <td>{{user.age}}</td>
    </tr>
  </tbody>
</table>
<div>
  <button ng-disabled="currentPage === 1" ng-click="currentPage--">上一页</button>
  <span>第 {{currentPage}} 页 / 共 {{Math.ceil(users.length/pageSize)}} 页</span>
  <button ng-disabled="currentPage >= Math.ceil(users.length/pageSize)" ng-click="currentPage++">下一页</button>
</div>

控制器逻辑

$scope.currentPage = 1; // 当前页码
$scope.pageSize = 5; // 每页条数

关键点

  • limitTo:pageSize: (currentPage-1)*pageSize 中,第一个参数为每页条数,第二个参数为起始索引。
  • 通过 currentPagepageSize 计算总页数,并控制分页按钮的禁用状态。

表格样式与条件渲染

结合 ng-classng-if 可实现动态样式和条件渲染,为年龄超过 30 的行添加高亮样式:

<tr ng-repeat="user in users" ng-class="{'highlight': user.age > 30}">
  <td>{{user.name}}</td>
  <td>{{user.age}}</td>
</tr>

CSS 样式

AngularJS表格基础知识笔记,如何实现动态排序与分页?

.highlight {
  background-color: #ffeb3b;
}

关键点

  • ng-class 支持对象语法,键为 CSS 类名,值为布尔表达式,条件为 true 时添加类名。
  • ng-if 可用于根据条件渲染整个行或单元格(如 ng-if="user.age >= 18" 显示成年标识)。

表格数据操作

可通过按钮实现数据的增删改,例如添加新用户:

<input type="text" ng-model="newUser.name" placeholder="姓名">
<input type="number" ng-model="newUser.age" placeholder="年龄">
<button ng-click="addUser()">添加</button>
<tr ng-repeat="user in users">
  <td>{{user.name}}</td>
  <td>{{user.age}}</td>
  <td><button ng-click="deleteUser($index)">删除</button></td>
</tr>

控制器逻辑

$scope.newUser = {};
$scope.addUser = function() {
  $scope.users.push(angular.copy($scope.newUser));
  $scope.newUser = {}; // 清空输入
};
$scope.deleteUser = function(index) {
  $scope.users.splice(index, 1);
};

关键点

  • 使用 angular.copy() 避免引用类型数据导致的问题。
  • 删除时通过 $index 获取当前行的索引,splice() 方法移除数组元素。

AngularJS 通过 ng-repeat、过滤器(orderByfilterlimitTo)和指令(ng-classng-modelng-click)等特性,实现了表格的动态渲染、排序、搜索、分页及数据操作,掌握这些基础知识点,能够高效构建功能完善的表格组件,为复杂的数据展示场景打下坚实基础,在实际开发中,还需结合性能优化(如大数据量时使用分页)和用户体验设计(如加载状态提示),进一步提升表格的实用性和交互性。

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/55838.html

(0)
上一篇 2025年11月4日 16:28
下一篇 2025年11月4日 16:32

相关推荐

  • 在云南选择云服务器公司,怎样才算靠谱且性价比高?

    在数字化浪潮席卷全球的今天,云服务器作为支撑企业数字化转型的关键基础设施,其战略地位日益凸显,当我们将目光聚焦于中国西南边陲的明珠——云南,会发现这片以秀丽风光和多元文化闻名的土地,正在悄然崛起成为一片云服务产业发展的热土,云南云服务器公司,作为这一进程的核心参与者和推动者,不仅为本地企业注入了新的活力,也为面……

    2025年10月18日
    0850
  • RackNerd多IP站群服务器测评怎么样?多IP服务器值得购买吗?

    RackNerd这款$99/月的多IP站群服务器方案,在当前市场中属于高性价比的选择,特别是其提供的2个C段IP资源,对于需要规避IP关联风险的SEO项目具有极高的实用价值,经过深度测试与配置分析,该服务器在硬件性能、网络稳定性以及IP的纯净度方面均达到了专业站群运营的标准,能够有效支撑中大型站群系统的稳定运行……

    2026年2月26日
    0512
  • 中小企业预算有限,服务器该买还是租?如何选才划算?

    在数字化转型的浪潮下,企业对IT基础设施的需求日益增长,其中服务器的选择成为许多组织面临的核心决策:究竟是该购买物理服务器,还是转向云服务或其他解决方案?这一问题没有绝对的标准答案,需结合企业规模、业务特性、成本预算及技术能力等多维度因素综合考量,本文将从实际应用场景出发,分析购买服务器的利弊,并提供决策参考……

    2025年11月26日
    01250
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • 双12GPU云服务器优惠活动详情?价格与配置信息如何?

    随着人工智能、大数据、云计算技术的飞速发展,GPU(图形处理器)作为高性能计算的核心组件,其重要性日益凸显,在双12购物节期间,GPU云服务器优惠活动成为科技企业及开发者关注的焦点,酷番云作为国内领先的云计算服务提供商,推出的双12GPU云服务器优惠活动,不仅提供了极具竞争力的价格,更结合了丰富的产品线与专业服……

    2026年1月24日
    0610

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注