angular.js - angular表格点击序号进行升序,降序排序,怎么实现。

浏览:35日期:2023-01-08

问题描述

<p ng-app='app' ng-controller='appController'> <table><thead><tr> <th>序号</th> <th>内容</th> <th>姓名</th> <th>地点</th> <th>时间</th> <th ng-click='sort(’id’)'>序号</th></tr></thead><tbody> <tr ng-repeat='x in obj | orderBy: ’id’'><td ng-if='$index + 1 === 1' style='color: red'>{{$index + 1}}</td><td ng-if='$index + 1 === 2' style='color: green'>{{$index + 1}}</td><td ng-if='$index + 1 === 3' style='color: yellow'>{{$index + 1}}</td><td ng-if='$index + 1 > 3'>{{$index + 1}}</td><td>{{x.Name}}</td><td>{{x.City}}</td><td>{{x.Country}}</td><td>{{x.Country + x.City}}</td><td>{{x.id}}</td> </tr></tbody> </table></p>

//js文件<script> var app = angular.module(’app’, []); app.controller(’appController’, function($scope, $http) { //数据 $scope.obj = [{ 'Name': 'Alfreds Futterkiste', 'City': 'Berlin', 'Country': 'Germany', 'id': 4},{ 'Name': 'Ana Trujillo Emparedados y helados', 'City': 'México D.F.', 'Country': 'Mexico', 'id': 3},{ 'Name': 'Comércio Mineiro', 'City': 'São Paulo', 'Country': 'Brazil', 'id': 2}, { 'Name': 'Ana Trujillo Emparedados y helados', 'City': 'México D.F.', 'Country': 'Mexico', 'id': 5} ]; });</script>

怎么实现点击序号进行升序降序的排序,新手,求详细的代码,谢谢大家。

问题解答

回答1:

html改下:

<p ng-app='app' ng-controller='appController'> <table><thead><tr> <th>序号</th> <th>内容</th> <th>姓名</th> <th>地点</th> <th>时间</th> <th ng-click='toggleSort()'>序号</th></tr></thead><tbody> <tr ng-repeat='x in obj'><td ng-if='$index + 1 === 1' style='color: red'>{{$index + 1}}</td><td ng-if='$index + 1 === 2' style='color: green'>{{$index + 1}}</td><td ng-if='$index + 1 === 3' style='color: yellow'>{{$index + 1}}</td><td ng-if='$index + 1 > 3'>{{$index + 1}}</td><td>{{x.Name}}</td><td>{{x.City}}</td><td>{{x.Country}}</td><td>{{x.Country + x.City}}</td><td>{{x.id}}</td> </tr></tbody> </table></p>

js

//js文件<script> var app = angular.module(’app’, []); app.controller(’appController’, function($scope, $http) {$scope.sortIsAsc = true;//数据 $scope.obj = [{ 'Name': 'Alfreds Futterkiste', 'City': 'Berlin', 'Country': 'Germany', 'id': 4},{ 'Name': 'Ana Trujillo Emparedados y helados', 'City': 'México D.F.', 'Country': 'Mexico', 'id': 3},{ 'Name': 'Comércio Mineiro', 'City': 'São Paulo', 'Country': 'Brazil', 'id': 2}, { 'Name': 'Ana Trujillo Emparedados y helados', 'City': 'México D.F.', 'Country': 'Mexico', 'id': 5} ];$scope.toggleSort = function(){$scope.sortIsAsc = !$scope.sortIsAsc;$scope.obj.sort(function(a, b){ if($scope.sortIsAsc){if (a.id < b.id) { return -1;}if (a.id === b.id) { return 0;}return 1; } if (a.id > b.id) {return -1; } if (a.id === b.id) {return 0; } return 1;}); }; });</script>回答2:

你可以用过滤器 orderBy:’id’:desc来控制排序是升序还是降序。下面的代码你按照3-2-1的顺序看比较容易理解。1、点击一次改变一次desc

<th ng-click='desc=!desc'>序号</th>

2、在appController中设置desc初始化值=0

$scope.desc = 0;

3、在过滤器中添加排序条件

<tr ng-repeat='x in obj | orderBy: ’id’:desc'>

相关文章: