本代码出自向军老师的angularjs课程
可以实现对表格数据的排列,难点在于argument,callee那一块。
<!DOCTYPE html>
<html lang="en" ng-app="hd">
<head>
<title></title>
<script type="text/javascript" src="js/angular-1.3.0.js"></script>
</head>
<body>
<div ng-controller="ctrl">
{{time | date:'yy年MM月dd日 HH:mm:ss'}}<br>
{{data}}<button ng-click="orderBy()">触发排序</button><br>
{{data | filter:'1'}}
<!-- 加上true完全匹配 -->
<table border="1" width="600">
<tr>
<td ng-click="orderBy('id')">id</td>
<td ng-click="orderBy('click')">click</td>
<td ng-click="orderBy('name')">name</td>
</tr>
<tr ng-repeat = "(k,v) in data">
<td>{{v.id}}</td>
<td>{{v.click}}</td>
<td>{{v.name}}</td>
</tr>
</table>
</div>
<script type="text/javascript">
var m = angular.module('hd',[]);
m.controller('ctrl',['$scope','$filter',function($scope,$filter){
$scope.time = new Date().getTime();
$scope.data = [
{id:1,click:20,name:'liuchang'},
{id:3,click:300,name:'wangzhen'},
{id:2,click:250,name:'lixiang'}
];
$scope.orderBy1 = function(){
$scope.data = $filter('orderBy')($scope.data,'id',true);
}
$scope.orderBy = function(field){
console.log(arguments.callee[field])
if(arguments.callee[field]==undefined){
arguments.callee[field]=false;
}
arguments.callee[field]=!arguments.callee[field];
$scope.data = $filter('orderBy')($scope.data,field,arguments.callee[field]);
}
}]);
</script>
</body>
</html>