表中的列默认排序

时间:2015-05-12 15:37:37

标签: javascript angularjs sorting

有一个表可以对表中的每列进行排序正常工作。我想知道默认情况下表格如何决定排序。我认为目前它是按第一列排序(哪种有意义),但我更喜欢用其他东西作为默认排序。我希望它按时间排序,最近的时间排在最前面,当我调用相同的排序方法时,我必须在用户点击它时对列进行排序,它不会工作相同。我在这里this plunker

我必须根据单击哪一个来排序列的方法是

  $scope.order = function(predicate, reverse) {
    $scope.reverse = !$scope.reverse;
    $scope.recentalerts = orderBy($scope.recentalerts, predicate, $scope.reverse);
  };

我只是尝试使用我在html中使用的相同调用来默认排序时间列:

$scope.order('-time');

但是当我装满了那个掠夺者时,没有任何事情像我预期的那样发生。

2 个答案:

答案 0 :(得分:1)

原始解决方案

在收到来自您通话的数据之前,您正在呼叫success功能。只需将方法调用移至您承诺的 $http.get('https://api.myjson.com/bins/4djr5').success(function(data) { $scope.recentalerts = data; $scope.total = $scope.recentalerts.length; $scope.order('-time') }); 回调即可。

ng-click

更新了plunkr - http://plnkr.co/edit/uFJ8CtHYK99Nv3A6VsXO?p=preview

更好的解决方案

这是一种更 angular 的方式。这样就无需在获取数据后手动处理排序。它利用您现有的$digest以及角度<tr data-ng-repeat="alert in recentalerts | orderBy:sortAttr:reverse"> 周期。

orderBy声明

$scope.order = function(predicate) {
    $scope.reverse = !$scope.reverse;
    $scope.sortAttr = pedicate
  };

订购功能

dao

另外一个好处是,你不会影响原始数组,就像集合与它的源数组之间的关系一样。

plunkr - http://plnkr.co/edit/5iA40dqxBT96kA6qHZD3?p=preview

答案 1 :(得分:1)

我已经分叉了你的傻瓜 - 请检查一下。 http://plnkr.co/edit/G3qAeHBq5tmbJCZlsgkA?p=preview

throw new ErrorException('Failed here!', 10);