有一个表可以对表中的每列进行排序正常工作。我想知道默认情况下表格如何决定排序。我认为目前它是按第一列排序(哪种有意义),但我更喜欢用其他东西作为默认排序。我希望它按时间排序,最近的时间排在最前面,当我调用相同的排序方法时,我必须在用户点击它时对列进行排序,它不会工作相同。我在这里this plunker。
我必须根据单击哪一个来排序列的方法是
$scope.order = function(predicate, reverse) {
$scope.reverse = !$scope.reverse;
$scope.recentalerts = orderBy($scope.recentalerts, predicate, $scope.reverse);
};
我只是尝试使用我在html中使用的相同调用来默认排序时间列:
$scope.order('-time');
但是当我装满了那个掠夺者时,没有任何事情像我预期的那样发生。
答案 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);